Python正規表示式之 b

2021-08-01 13:31:04 字數 914 閱讀 5518

\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 匹配這樣的...