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

2021-06-13 13:57:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道以前有人问过这个问题,但今天早些时候我在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'

我几乎可以肯定它与点无关,因为我有其他类似结构的变量,而且工作得很好。。你知道吗

我想知道为什么会发生这种情况,或者用另一种方法来确定一个字符串是否在另一个字符串中。你知道吗

谢谢你的建议

3条回答
网友
1楼 ·
'INT.EST.C.S. B308'
            ^^

点和空格'. ',在regex中等价于\W\W,不被认为是单词边界\b(^\w|\w$|\W\w|\w\W)的一部分。使用负锁定(?<!)(?!)。你知道吗

正则表达式

网友
2楼 ·

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

您可以通过转义点来正确格式化模式。你知道吗

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

或者,由于这是一个简单的模式,您可以使用in来检查text1是否包含在text2

if text1 in text2:  
    #doSomething()
网友
3楼 ·

试试这个。你知道吗

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

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

相关问题