正則表示式 \B 是什麼意思? 怎麼用?
阿新 • • 發佈:2021-09-13
1.\b 在ASCII字元中代表退格鍵, 但是 \b 同時也是一個正則表示式的特殊符號
為了讓RE編譯器把 \b 當做你想匹配的字串,而非一個退格鍵,需要用另外一個反斜線進行轉義, \\b
2. \b代表字與字中間那個看不見的東西,如
here is a word
那麼,這句中有好幾個\b, 每個單詞的前後都有一個\b.
所以你用 \bhere\b 可以匹配上面這個here,但如果here 不是一個單詞,而是一個單詞的一部分,如 adheread, 這樣的話,用here 可以匹配,用\bhere\b就不能區配了,因為ad後面沒有\b. 所以 adhere 中的here 不會被匹配。
總結: \b 就是用在你匹配整個單詞的時候。 如果不是整個單詞就不匹配。 你想匹配 I 的話,你知道,很多單詞裡都有I的,但我只想匹配I,就是“我”,這個時候用 \bI\b
\B就是反過來,代表非字間。 類似\d代表數字, \D代表非數字。
3.我在用python用正則匹配的時候,想將內容按詞彙進行匹配相應的結果,一直匹配不出來,後面查了一下\b的含義,發現將\b寫成\\b就可以匹配出來。
如:
pattern = re.compile('\bI\b|\bII\b|\bIII\b|\bIV\b|\bV\b|\bVI\b|\bVII\b|\bVIII\b|\bIX\b') print(pattern) print(pattern.findall(keya["name"])) if pattern.findall(keya["name"]): data.append(keya)
這樣寫,匹配出來的結果為空,當寫成這樣子的時候:
pattern = re.compile('\\bI\\b|\\bII\\b|\\bIII\\b|\\bIV\\b|\\bV\\b|\\bVI\\b|\\bVII\\b|\\bVIII\\b|\\bIX\\b') print(pattern) print(pattern.findall(keya["name"])) if pattern.findall(keya["name"]): data.append(keya)
匹配結果如下所示: