1.正則使用變量匹配re.escape()
re.escape()
是一個用于轉義正則表達式中特殊字符的函數。當我們需要使用變量構建正則表達式模式時,為了避免特殊字符對模式的解析產生影響,我們可以使用 re.escape()
函數來自動轉義這些特殊字符。
例如,如果我們有一個字符串變量 a
,并且想要將它插入到正則表達式模式中,我們可以使用 re.escape(a)
來確保變量中的特殊字符被正確轉義。
以下是一個示例:
import re# 定義變量
a = "測試中."# 構建正則表達式模式
pattern = r"這是一個{}的例子".format(re.escape(a))# 在文本中查找匹配項
text = "這是一個測試中.的例子"
match = re.search(pattern, text)if match:print("找到匹配項")
else:print("未找到匹配項")
在上面的示例中,我們使用 re.escape(a)
來轉義變量 a
中的特殊字符(例如點號.
),以確保它們不會干擾正則表達式模式的解析。
2.正則使用函數匹配re.sub()
re.sub()
是 Python 中用于替換字符串中匹配正則表達式模式的方法。它可以在字符串中搜索匹配模式的部分,并用指定的替換字符串來替換它們。
re.sub(pattern, repl, string, count=0, flags=0)
的參數解釋如下:
pattern
: 要匹配的正則表達式模式。repl
: 替換匹配模式的字符串,可以是一個固定的字符串,也可以是一個函數。string
: 要進行替換操作的原始字符串。count
: 可選參數,指定最多進行多少次替換,默認為 0,表示替換所有匹配項。flags
: 可選參數,用于指定正則表達式的匹配模式。
下面示例,演示了 re.sub()
的用法:
import re# 替換匹配項為固定字符串
text = "Hello, World!"
new_text = re.sub(r"World", "Python", text)
print(new_text) # 輸出: Hello, Python!# 替換匹配項為另一個匹配項的一部分
text = "John Doe, Jane Doe"
new_text = re.sub(r"Doe", r"Smith", text)
print(new_text) # 輸出: John Smith, Jane Smith# 使用函數進行替換
def to_upper(match):return match.group(0).upper()text = "hello, world!"
new_text = re.sub(r"\b\w+\b", to_upper, text)
print(new_text) # 輸出: HELLO, WORLD!
在上面的示例中,我們使用 re.sub()
進行了不同種類的替換操作。第一個示例中,我們將字符串中的 “World” 替換為 “Python”。第二個示例中,我們將 “Doe” 替換為 “Smith”。第三個示例中,我們使用函數 to_upper()
將匹配到的單詞轉換為大寫。
3.匹配特定值的前幾位或者后幾位
正則匹配以’test’開頭的前10位,以’test’結尾的后10位
你可以使用以下正則表達式來匹配字符串中以’test’開頭的前10位和以’test’結尾的后10位:
import re# 原始字符串
text = "123423434543524353452342024年01月01日測試中撒旦發射點手動閥手動閥手動閥234545334test1234567890"# 匹配以'test'開頭的前10位
pattern_start = r"^test.{6}"
match_start = re.search(pattern_start, text)if match_start:matched_start = match_start.group()print("以'test'開頭的前10位:", matched_start)
else:print("未找到匹配的內容")# 匹配以'test'結尾的后10位
pattern_end = r".{10}test$"
match_end = re.search(pattern_end, text)if match_end:matched_end = match_end.group()print("以'test'結尾的后10位:", matched_end)
else:print("未找到匹配的內容")
在上述代碼中,我們使用了正則表達式模式來進行匹配。^test.{6}
表示以’test’開頭,后面緊跟著任意6個字符;.{10}test$
表示任意10個字符,后面緊跟著’test’結尾。通過 re.search()
函數來搜索匹配項,并提取出匹配的內容。