使用re在另一个字符串中查找字符串

时间:2018-02-26 04:13:05

标签: python regex python-3.x

我知道之前已经问过这个问题,但今天早些时候我在SO中找到了以下代码:

import re   

def findIfWordMatch(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search

例如,如果我使用以下字符串,如果在text2中找到text1,则函数返回匹配对象(否则函数返回None):

text1 = 'DIBUJO'
text2 = 'DIBUJO B308'

因此要知道text1是否在text2中,我会执行以下操作:

if(findIfWordMatch(text1)(text2) is not None):  
    #doSomething()

在我使用这些变量之前,它一直运作良好:

text1 = 'INT.EST.C.S.'
text2 = 'INT.EST.C.S. B308'

我几乎可以肯定它与点无关,因为我有其他类似结构的变量,并且工作得很好......

我想知道为什么会发生这种情况或以其他方式查找字符串是否在另一个字符串内。

感谢您的建议

2 个答案:

答案 0 :(得分:1)

试试这个。

text1 = 'INT.EST.C.S.'
text2 = 'INT.EST.C.S. B308'

if text1 in text2:
  print("yes!")

答案 1 :(得分:0)

'.'用于匹配任何字符。所以你的模式匹配得比它应该的更多。

您可以通过转义点来正确格式化图案。

text1 = r'INT\.EST\.C\.S\.'

或者由于这是一个简单模式,您可以使用in来检查text1

中是否包含text2
if text1 in text2:  
    #doSomething()