无法搜索
>>> 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>
答案 0 :(得分:2)
呀,您需要使用\B
,因为\b
和空格之间不存在单词边界!
。
re.search(r'\B' + y+ r'\b', x)
Note:
\b
匹配单词char和非单词字符(反之亦然),而\B
与\b
相反,它匹配两个单词字符或两个非单词字符。在第一个示例中,\B
(非单词)之间存在非单词边界!
,作为{{1}中出现的值的起始字符}和y
之前存在的空格(非单词)。
示例:强>
!
但在第二个示例中,启动char是>>> 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>
>>>
( word char ),并且char存在于1
之前(输入字符串上的 )是152
(非单词字符)。所以这里必须有一个单词边界!
。