1. 程式人生 > 其它 >正則表示式 \B 是什麼意思? 怎麼用?

正則表示式 \B 是什麼意思? 怎麼用?

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)

匹配結果如下所示: