是否可以使用re.search将切片与正则表达式组合在搜索模式中?

时间:2011-09-06 05:39:39

标签: python

e [1]等于192.168.1.1。我想在此搜索中添加正则表达式以防止与192.168.11匹配。有人可以帮忙吗?我有一段时间对抗这个问题。如果我尝试在切片后附加任何内容,则会出现语法错误。

  
    
      

re.search(e [1],'192.168.1.11')

    
  

< _sre.SRE_Match对象位于0x1004c2648>

1 个答案:

答案 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']