簡體   English   中英

如何在Python中使用正則表達式使\\ b接受以'+'開頭的單詞?

[英]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\\bNONWORDNONWORD\\bWORD ), \\B需要兩個非單詞或兩個單詞字符進行匹配(因此WORD\\BWORDNONWORD\\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM