[英]How can you make \b accept words that start with '+' using regex in python?
re.search(r"\b\+359\b","Is your phone number +359 887438?")
為什么此正則表達式找不到+359
,我如何讓\\b
考慮以+
開頭的單詞?
您無法更改\\b
的行為。 您必須使用其他錨點; 像\\B
,它在開始或一個字的結束相匹配的任何位置不 ; 它是\\b
的倒數:
\B\+359\b
如果在+
之前沒有單詞字符,該字符本身又是非單詞字符,則這再次匹配。 \\b
只能在單詞和非單詞字符之間匹配(因此WORD\\bNONWORD
或NONWORD\\bWORD
), \\B
需要兩個非單詞或兩個單詞字符進行匹配(因此WORD\\BWORD
或NONWORD\\BNONWORD
)。 作為+
是一個非單詞字符,無論發生什么事之前+
也必須是一個非單詞字符。
另外,您可以使用負向后看:
(?<!\w)\+359\b
(?<!\\w)
否定后向斷言僅匹配在該位置之前沒有單詞字符的位置。
演示:
>>> import re
>>> re.search(r"\b\+359\b","Is your phone number +359 887438?")
>>> re.search(r"\B\+359\b","Is your phone number +359 887438?")
<_sre.SRE_Match object at 0x10cf03850>
>>> re.search(r"(?<!\w)\+359\b","Is your phone number +359 887438?")
<_sre.SRE_Match object at 0x10cf03d30>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.