Python-正則表達式2
用句點字符匹配換行
點-星將匹配除換行外的所有字符。通過傳入 re.DOTALL 作為 re.compile()的第
二個參數,可以讓句點字符匹配所有字符,包括換行字符
name = re.compile(r'.*') mo = name.search("Serve the public trust.\nProtect the innocent. \nUphold the law.") print(mo.group()) Serve the public trust. name = re.compile(r'.*', re.DOTALL) mo = name.search('Serve the public trust.\nProtect the innocent. \nUphold the law.') print(mo.group()) Serve the public trust. Protect the innocent. Uphold the law.
復習
?匹配零次或一次前面的分組。
*匹配零次或多次前面的分組。
+匹配一次或多次前面的分組。
{n}匹配 n 次前面的分組。
{n,}匹配 n 次或更多前面的分組。
{,m}匹配零次到 m 次前面的分組。
{n,m}匹配至少 n 次、至多 m 次前面的分組。
{n,m}?或*?或+?對前面的分組進行非貪心匹配。
^spam 意味著字符串必須以 spam 開始。
spam$意味著字符串必須以 spam 結束。
.匹配所有字符,換行符除外。
\d、\w 和\s 分別匹配數字、單詞和空格。
\D、\W 和\S 分別匹配出數字、單詞和空格外的所有字符。
[abc]匹配方括號內的任意字符(諸如 a、b 或 c)。
[^abc]匹配不在方括號內的任意字符。
不區分大小寫
有時候你只關心匹配字母,不關心它們是大寫或小寫。要讓正則表達式
不區分大小寫,可以向 re.compile()傳入 re.IGNORECASE 或 re.I,作為第二個參數。
用 sub()方法替換字符串
正則表達式不僅能找到文本模式,而且能夠用新的文本替換掉這些模式。Regex
對象的 sub()方法需要傳入兩個參數。第一個參數是一個字符串,用于取代發現的匹
配。第二個參數是一個字符串,即正則表達式。sub()方法返回替換完成后的字符串。
name = re.compile(r'Hello,\w+') mo = name.sub('hi,World', 'Hello,jack; I\'m xiaoming') print(mo)
有時候,你可能需要使用匹配的文本本身,作為替換的一部分。在 sub()的第一
個參數中,可以輸入\1、\2、\3……。表示“在替換中輸入分組 1、2、3……的文本”。
例如,假定想要隱去密探的姓名,只顯示他們姓名的第一個字母。要做到這一
點,可以使用正則表達式 Agent (\w)\w*,傳入 r'\1****'作為 sub()的第一個參數。字
符串中的\1 將由分組 1 匹配的文本所替代,也就是正則表達式的(\w)分組。
name = re.compile(r'Jim (\w)\w') mo = name.sub('1***', 'Jim Bac I have a dream Jim Naaa, and Jim Deee') print(mo)

浙公網安備 33010602011771號