我需要从 lst 列表中检测文本中的确切模式,但当它是其他单词的一部分时则不需要。我知道我可以使用 anchor 来精确匹配模式,但它不适用于变量。感谢您的帮助!
lst = ['Test', 'Pink', 'Blue', 'Green']
text = 'Testing and Pink. Blue is my fav color. Greenwood is my name.'
def get_words_from_lst(text, lst):
words = []
for word in lst:
if r'{}'.format(word) in text:
words.append(word)
print(words)
get_words_from_lst(text, lst)
期望的输出:['Pink', 'Blue']
请您参考如下方法:
使用 Regex 和 边界 (\b)
演示:
import re
lst = ['Test', 'Pink', 'Blue', 'Green']
text = 'Testing and Pink. Blue is my fav color. Greenwood is my name.'
def get_words_from_lst(text, lst):
#print([word for word in lst if re.search(r"\b"+word+r"\b", text)]) #Single line list comprehension
words = []
for word in lst:
if re.search(r"\b"+word+r"\b", text):
words.append(word)
print(words)
get_words_from_lst(text, lst)
输出:
['Pink', 'Blue']
