1. 程式人生 > >Python正則表示式之\b

Python正則表示式之\b

\b 稱為單詞邊界(word boundary)符.

例如只想匹配 My cat is bad.中的cat 可以使用 \bcat\b

import re harsh_str = ['hello','Cat',' cat','cat h','CAT','CAt-h','Cat_h']
#re.I要在compile的時候指定,注意\b在python中是回退符,正則模式之前一定要加r(raw string)
p = re.compile(r'\bcat\b', re.I) p1 = re.compile(r'\bcat h\b', re.I) p2 = re.compile(r'\bcat-h\b'
, re.I) print([ s for s in harsh_str if re.search(p, s)]) print([ s for s in harsh_str if re.search(p1, s)]) print([ s for s in harsh_str if re.search(p2, s)])

輸出:

['Cat', ' cat', 'cat h', 'CAT', 'CAt-h']

['cat h']
['CAt-h']

但是pattern p依然匹配到了 CAt-h.這是因為下劃線_是單詞字元,\b本身只佔一位,有三種情況會匹配到,一種就是\b會匹配到兩個字元之間,一個是單詞字元,另一個不是單詞字元。對於Cat_h t是單詞字元,但是‘_’也是單詞字元,所以沒有匹配。下面的兩個例子意思是這裡的單詞並非一定是連續的字串。