python 字串的搜尋匹配與替換(詳細)

2021-10-10 14:49:29 字數 3735 閱讀 7051

需求:單次匹配字串

需求:全文搜尋替換字串

需求:全文搜尋匹配字串

需求:以匹配的字元分割字串

有誤請指出,正在改動中…

python 裡的引數用flag表示正則修飾符的引數。

使用多個修飾符設定正規表示式的匹配模式:re.i | re.m

修飾符描述

re.i使匹配對大小寫不敏感

re.l

做本地化識別(locale-aware)匹配

re.m多行匹配,影響 ^ 和 $

re.s使 . 匹配包括換行在內的所有字元

re.u

根據unicode字符集解析字元。這個標誌影響 \w, \w, \b, \b.

re.x

該標誌通過給予你更靈活的格式以便你將正規表示式寫得更易於理解。

反向引用:反斜槓加數字\n

(?exp):匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

但是在python中,為(?pexp)

注意:反向引用需要字首r,否則會被 python 誤認為是進製數:比如\1實際意義變成\x01

python 中的match(),需要這個字串以這個正則開頭,【檢驗字串開頭有沒有正確】。如果字串開頭有所不同就匹配失敗,返回none。(就是許多文章說的 「檢測 re 是不是在 string 的開始位置匹配」)

fullmatch():字串完全匹配正則,字串完全匹配正則【檢驗這個字串是不是我們所要的東西】

search()是在整個字串裡部分匹配,【字串裡有沒有這個的東西】。值得注意的是search()只會匹配一次。

基本需求使用replace(),當然這裡都說了 re 模組了,複雜的替換應該使用re.sub()。它會替換字串裡的所有匹配。

substitute

n. 代替者; 代替物; 代用品; 替補(運動員);

v. (以…) 代替; 取代;

re.sub(pattern, repl, string, count=

0, flags=

0)

pattern:正規表示式。

repl:要替換成的字串,可為函式。

string:源字串。

count:最少要替換的次數。

flag:正規表示式的匹配模式

正規表示式修飾符 - 可選標誌 | 菜鳥教程

# 將「\n3.」等換為「」

oristr =

'\n3.這是第三點'

resstr = re.sub(r'\n(\d+)\.'

, r'\n【\1】'

, oristr)

print

(resstr)

這是第三點
re.findall(),返回所有匹配的乙個列表

re.findall(pattern, string, flags=

0)

pattern.findall(string[

, pos[

, endpos]

])

import re

result1 = re.findall(r'\d+'

,'runoob 123 google 456')

pattern = re.

compile

(r'\d+'

)# 查詢數字

result2 = pattern.findall(

'runoob 123 google 456'

)result3 = pattern.findall(

'run88oob123google456',0

,10)print

(result1)

print

(result2)

print

(result3)

輸出結果:

['123', '456']

['123', '456']

['88', '12']

re.finditer(),返回所有匹配的乙個迭代器

迭代器只有在手動迭代的時候才會去匹配,如果目標字串很長且不需要全部匹配的話,使用迭代器在獲取到目標字串後停下,可以提高效率。

re.finditer(pattern, string, flags=

0)

import re

it = re.finditer(r"\d+"

,"12a32bc43jf3"

)for match in it:

# 這裡僅作演示,將所有可能的都進行匹配了

print

(match.group(

))

12 

32 43

3

將匹配的字串作為 split 的字元,以其切割字串返回列表

re.split(pattern, string[

, maxsplit=

0, flags=0]

)

>>

>

import re

>>

> re.split(

'\w+'

,'runoob, runoob, runoob.'

)# 注意這裡是大寫的w

['runoob'

,'runoob'

,'runoob',''

]>>

> re.split(

'(\w+)'

,' runoob, runoob, runoob.'

)# 小括號表示保留這個分隔符[''

,' '

,'runoob'

,', '

,'runoob'

,', '

,'runoob'

,'.'

,''

重要的一點就是可以使用小括號,將分隔符保留下來。

本文部分參考:python3 正規表示式 | 菜鳥教程

字串搜尋與匹配

學分貴學分貴,學了就要會!廢話不多說,下面將對一些常見的基於文字的相似性演算法做一下總結,一些很經典的演算法這裡會給出來實現。neighbourhood search n gram distance edit distance 接下來主要對這些演算法的原理做乙個介紹,然後給出相應的演算法。接下來主要...

Python字串操作之字串搜尋與替換

11 字串中的搜尋和替換 11.1 str.find 正序字串查詢函式 函式原型 str.find substr pos start pos end 返回str中第一次出現的substr的第乙個字母的標號,如果str中沒有substr則返回 1,也就是說從左邊算起的第一次出現的substr的首字母標...

Python字串操作之字串搜尋與替換

11 字串中的搜尋和替換 11.1 str.find 正序字串查詢函式 函式原型 str.find substr pos start pos end 返回str中第一次出現的substr的第乙個字母的標號,如果str中沒有substr則返回 1,也就是說從左邊算起的第一次出現的substr的首字母標...