Skip to main content
 首页 » 编程设计

python之与变量匹配的正则表达式精确模式

2024年08月16日37soundcode

我需要从 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']