把正規表示式的模式和標識轉化成正規表示式物件,供 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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...