我需要从第一个列表中检测文本中的确切模式,但当它是其他单词的一部分时则不需要。我知道我可以使用 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']
最佳答案
使用带有边界(\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']
关于python - 正则表达式与变量精确模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50534417/