python - 正则表达式与变量的精确模式匹配
问题描述
我需要从 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']
解决方案
使用正则表达式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']
推荐阅读
- multithreading - 多个线程调用相同函数的问题
- wordpress - Wordpress 按元字段上的日期或最后修改日期排序
- gem-fury - 如何限制 gemfury 中的私有包访问,以便特定用户只能在包列表中看到特定包?
- kubernetes - .NET Core - 正确停止 Kestrel
- json - 使用 Jackson 动态替换 Json 值
- c# - 我应该处理本地类变量吗?
- xml - ABAP 使用 xpath 查询 XML 文件
- mysql - ERROR 1138:NULL 值 SQL 语句的使用无效:ALTER TABLE CHANGE COLUMN LONGTEXT NOT NULL
- php - 使用 Instagram 登录
- laravel - Laravel 用户权限分配给模型而不是特定用户(spatie / laravel-permission)