首页 > 解决方案 > 正则表达式与变量的精确模式匹配

问题描述

我需要从 lst 列表中检测文本中的确切模式,但不是当它是其他单词的一部分时。我知道我可以使用锚点来完全匹配模式,但它不适用于变量。将感谢您的帮助!

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']

标签: pythonregexpython-3.x

解决方案


使用正则表达式boundaries (\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']

推荐阅读