python正規表示式

2021-10-09 00:23:20 字數 3204 閱讀 7991

把正規表示式的模式和標識轉化成正規表示式物件,供 match() 和 search() 這兩個函式使用。

re 所定義的 flag 包括:

re.i 忽略大小寫

re.l 表示特殊字符集 \w, \w, \b, \b, \s, \s 依賴於當前環境

re.m 多行模式

re.s 即為』 . 』並且包括換行符在內的任意字元(』 . 』不包括換行符)

re.u 表示特殊字符集 \w, \w, \b, \b, \d, \d, \s, \s 依賴於 unicode 字元屬性資料庫

re.x 為了增加可讀性,忽略空格和』 # 』後面的注釋

以下兩種用法結果相同:

compiled_pattern = re.

compile

(pattern)

result = compiled_pattern.match(string)

result = re.match(pattern, string)
在字串中查詢匹配正規表示式模式的位置,返回 matchobject 的例項,如果沒有找到匹配的位置,則返回 none。

對於已編譯的正規表示式物件來說(re.regexobject),有以下 search 的方法:

search (string[

, pos[

, endpos]

])

若 regex 是已編譯好的正規表示式物件,regex.search(string, 0, 50) 等同於 regex.search(string[:50], 0)。

pattern = re.

compile

("a"

) pattern.search(

"abcde"

)# match at index 0

pattern.search(

"abcde",1

)# no match;

判斷 pattern 是否在字串開頭位置匹配。對於 regexobject,有:

match(string[

, pos[

, endpos]

])

match() 函式只在字串的開始位置嘗試匹配正規表示式,也就是只報告從位置 0 開始的匹配情況,而 search() 函式是掃瞄整個字串來查詢匹配。如果想要搜尋整個字串來尋找匹配,應當用 search()。

可以將字串匹配正規表示式的部分割開並返回乙個列表。對 regexobject,有函式:

split(string[

, maxsplit=0]

)

>>

> re.split(

'\w+'

,'test, test, test.')[

'test'

,'test'

,'test',''

]>>

> re.split(

'(\w+)'

,' test, test, test.')[

' test '

,', '

,' test '

,', '

,' test '

,'.',''

]>>

> re.split(

'\w+'

,' test, test, test.',1

)[' test '

,' test, test.'

]

對於乙個找不到匹配的字串而言,split 不會對其作出分割,如:

>>

> re.split(

'a*'

,'hello world')[

'hello world'

]

在字串中找到正規表示式所匹配的所有子串,並組成乙個列表返回。同樣 regexobject 有:

findall(string[

, pos[

, endpos]

])

>>

> return_list = re.findall(

"(\[.*?\])"

,string)

和 findall 類似,在字串中找到正規表示式所匹配的所有子串,並組成乙個迭代器返回。同樣 regexobject 有:

finditer(string[

, pos[

, endpos]

])

在字串 string 中找到匹配正規表示式 pattern 的所有子串,用另乙個字串 repl 進行替換。如果沒有找到匹配 pattern 的串,則返回未被修改的 string。repl 既可以是字串也可以是乙個函式。對於 regexobject 有:

sub(repl, string[

, count=0]

)

>>

> p = re.

compile

('(one|two|three)'

)>>

> p.sub(

'num'

,'one word two words three words'

)'num word num words num words'

同樣可以用以下方法,並指定 count 為 1(只替換第乙個):

>>

> p.sub(

'num'

,' one word two words three words'

, count=1)

' num word two words three words'

該函式的功能和 sub() 相同,但它還返回新的字串以及替換的次數。同樣 regexobject 有:

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...