我有以下的小Python腳本:我的單詞邊界正則表達式有什麼問題?
import re
def main():
thename = "DAVID M. D.D.S."
theregex = re.compile(r"\bD\.D\.S\.\b")
if re.search(theregex, thename):
print ("you did it")
main()
它不匹配。但是,如果我稍微調整正則表達式並刪除最後一個。它確實工作,像這樣:
\bD\.D\.S\b
我覺得我很瞭解正則表達式,但這一直很困惑。我對\ b(單詞邊界)的理解應該是非字母數字(和下劃線)的零寬度匹配。所以,我希望
"\bD\.D\.S\.\b"
匹配:
D.D.S.
我缺少什麼?
檢查無字避免雙用'R'逃逸\ bD \ .D \ .S \。\ b;''但'\ b'(單詞邊界)不能在點之後進行匹配,因爲點是非單詞字符。 – anubhava
這是否意味着我只能使用\ b旁邊的單詞字符?所以如果我有「超!」我不能有一個正則表達式「hyper!\ b」 – sniperd
是的,因爲單詞已經在'!'結束了。 '\ b'可以用來聲明'hyper'和'!'之間的位置 – anubhava