关于regex:python-检查字符串是否包含在较大的字符串中

Python - Check If string Is In bigger String

我使用的是python2.7版,我想知道你是否能分辨出一个单词是否在一个字符串中。

例如,如果我有一个字符串和要查找的单词:

1
2
str ="ask and asked, ask are different ask. ask"
word ="ask"

我应该如何编码,以便我知道我得到的结果不包括属于其他单词的单词。在上面的例子中,我想要所有的"ask",除了一个"ask"。

我已尝试使用以下代码,但它不起作用:

1
2
3
4
5
def exact_Match(str1, word):
    match = re.findall(r"\\b" + word +"\\b",str1, re.I)
    if len(match) > 0:
        return True
    return False

有人能解释一下我该怎么做吗?


您可以使用以下功能:

1
2
3
4
5
6
7
8
>>> test_str ="ask and asked, ask are different ask. ask"
>>> word ="ask"

>>> def finder(s,w):
...   return re.findall(r'\b{}\b'.format(w),s,re.U)
...
>>> finder(text_str,word)
['ask', 'ask', 'ask', 'ask']

注意,边界regex需要\b

或者可以使用以下函数返回单词的索引:在拆分字符串中:

1
2
3
4
5
>>> def finder(s,w):
...   return [i for i,j in enumerate(re.findall(r'\b\w+\b',s,re.U)) if j==w]
...
>>> finder(test_str,word)
[0, 3, 6, 7]