e [1]等于192.168.1.1。我想在此搜索中添加正则表达式以防止与192.168.11匹配。有人可以帮忙吗?我有一段时间对抗这个问题。如果我尝试在切片后附加任何内容,则会出现语法错误。
re.search(e [1],'192.168.1.11')
< _sre.SRE_Match对象位于0x1004c2648>
答案 0 :(得分:1)
由于e [1]是一个字符串,您可以使用'+'运算符添加它。例如,您可以添加r'\b'
来设置word boundary(请注意原始字符串;没有'r'前缀'\ b'是退格键):
>>> e = ['', '192.168.1.1']
>>> pattern = r'\b' + re.escape(e[1]) + r'\b' #remember to escape e[1]
>>> re.search(pattern, '192.168.1.11')
>>> re.search(pattern, '192.168.1.1spam')
>>> re.search(pattern, '192.168.1.1').group()
'192.168.1.1'
>>> re.search(pattern, 'spam 192.168.1.1 eggs').group()
'192.168.1.1'
>>> string = '192.168.1.1,192.168.1.11,192.168.1.1'
>>> [x.group() for x in re.finditer(pattern, string)]
['192.168.1.1', '192.168.1.1']