現在,我很困惑。 b和>, <在正則表達式中有什麼區別?
我發現這個在正則表達式小抄
\b word boundary \< start of word \> end of word
但在 「精通正則表達式」 的書,它告訴我,
\< word boundary \> word boundary
有什麼區別在\b
和\>
之間\<
in rege X?
現在,我很困惑。 b和>, <在正則表達式中有什麼區別?
我發現這個在正則表達式小抄
\b word boundary \< start of word \> end of word
但在 「精通正則表達式」 的書,它告訴我,
\< word boundary \> word boundary
有什麼區別在\b
和\>
之間\<
in rege X?
摘要
\b word boundary \< word boundary; specifically, word boundary followed by a word; ie, start of word \> word boundary; specifically, word followed by word boundary; ie, end of word
如果你有一個像「鮑勃」一詞,則\b
字邊界模式將返回等同於開始和的結束兩個零長度匹配字。這很有用,因爲可以讓你選擇字符串中的單詞。因此,與\b
匹配的字符串「foo bar」在兩個單詞的開始 - 結束 - 開始 - 結尾處有四個空匹配。
在此基礎上,您可以看到\<
會給出單詞的開始位置(2個匹配foo的開始和bar的開始)以及\>
單詞的末尾(兩個匹配爲foo的結尾和酒吧的結束)。
所以,你可以等同\b
到\<
這樣的:
\<
is equivalent to
start-of-word
is equivalent to
word-boundary-followed-by-word
is equivalent to
\b(?=\w)
我覺得你的「精通正則表達式」本書則是一個有點模糊,並描述\<
和\>
爲字邊界,當它應該更精確地將它們分別區分爲「文字邊界(具體用於詞的開始)」和「文字邊界(具體用於詞的結尾)」。
Python的例子:
>>> re.compile(r'\b').findall('foo bar')
['', '', '', '']
>>> re.compile(r'\b(?=\w)').findall('foo bar')
['', '']
注意,Python不支持\<
和\>
。這是一個爲什麼字邊界有用的例子。我們可以挑出整個單詞的BAR,而不是在foo裏面包含的BAR:
>>> re.compile(r'\bBAR\b').findall('foBARo BAR')
['BAR']
我建議你試一下表達式。你只需要一個文本編輯器,控制檯程序或其中一個免費網站來測試這些。請記住,正則表達式解析因引擎而異,也就是程序。 – Smandoli
什麼語言?編程語言的正則表達式之間可能會有細微的差異 – ryanyuyu
@Smandoli謝謝您的建議,但我的這個問題的目的是在理論上不是一個實用的術語。 – fronthem