轉義特殊字元
特殊字元(如下面的字元類括號 [
和 ]
)字面上不匹配:
match = re.search(r'[b]', 'a[b]c')
match.group()
# Out: 'b'
通過轉義特殊字元,它們可以按字面匹配:
match = re.search(r'\[b\]', 'a[b]c')
match.group()
# Out: '[b]'
re.escape()
函式可用於為你執行此操作:
re.escape('a[b]c')
# Out: 'a\\[b\\]c'
match = re.search(re.escape('a[b]c'), 'a[b]c')
match.group()
# Out: 'a[b]c'
re.escape()
函式會轉義所有特殊字元,因此如果你根據使用者輸入組成正規表示式,它會很有用:
username = 'A.C.' # suppose this came from the user
re.findall(r'Hi {}!'.format(username), 'Hi A.C.! Hi ABCD!')
# Out: ['Hi A.C.!', 'Hi ABCD!']
re.findall(r'Hi {}!'.format(re.escape(username)), 'Hi A.C.! Hi ABCD!')
# Out: ['Hi A.C.!']