\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是單詞字元,但是『_』也是單詞字元,所以沒有匹配。下面的兩個例子意思是這裡的單詞並非一定是連續的字串。
正規表示式之 b
引用網上一段話 b 是正規表示式規定的乙個特殊 好吧,某些人叫它元字元,metacharacter 代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是 b 並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。如果需要更精確的說法,b 匹配這樣的...
正規表示式 b
b代表字與字中間那個看不見的東西,如 here is a word 那麼,這句中有好幾個 b,每個單詞的前後都有乙個 b.所以你用 bhere b 可以匹配上面這個here,但如果here 不是乙個單詞,而是乙個單詞的一部分,如 adheread,這樣的話,用here 可以匹配,用 bhere b就...
正規表示式 b
引用網上一段話 b 是正規表示式規定的乙個特殊 好吧,某些人叫它元字元,metacharacter 代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是 b 並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。如果需要更精確的說法,b 匹配這樣的...