无法搜索
>>> x = "address !152.1.1.1"
>>> y = "!152.1.1.1"
>>> import re
>>> re.search('\\b' +y+ '\\b', x)
如果我删除“!”然后就可以搜索了
>>> x = "address !152.1.1.1"
>>> y = "152.1.1.1"
>>> re.search('\\b' +y+ '\\b', x)
<_sre.SRE_Match object at 0xb7454a30>
最佳答案
是的,您需要使用 \B
,因为 !
和空格之间不存在单词边界 \b
。
re.search(r'\B' + y+ r'\b', x)
注意:
\b
匹配单词字符和非单词字符(反之亦然),而 \B
则相反\b
匹配两个单词字符或两个非单词字符。在第一个示例中,!
之间存在非单词边界 \B
(非单词),它作为单词的起始字符y
中存在的值以及 !
之前存在的空格(非单词)。
示例:
>>> import re
>>> x = "address !152.1.1.1"
>>> y = "!152.1.1.1"
>>> re.search(r'\B' +y+ r'\b', x)
<_sre.SRE_Match object at 0x7f0aa3842100>
>>>
但在第二个示例中,起始字符为 1
(单词字符),并且该字符存在于 152
之前(在输入字符串)是!
(非单词字符)。所以这里一定有一个字边界\b
。
关于python - 正则表达式\b 字边界不适用于 "!",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710608/