是否可以创建迭代列表的REGEX循环

时间:2018-03-08 00:34:49

标签: regex python-3.x

我正在使用以下内容来查找句子中是否存在文本并打印出该文本:

示例:

import re

lst = ['text1','text2','text3']

sent = 'This is a test to find text1 and text3'

my_regex =re.search(r'\b(text1)\b', sent)

print(my_regex.group())

text1

问题:

是否可以创建一个类似于以下内容的循环,它将使用列表中的每个值迭代并更新re.search:

注意 - 该列表可能会超出示例中列出的三个

for i in lst:
    my_regex =re.search(r'\b(i)\b', sent)
    print(my_regex.group())

2 个答案:

答案 0 :(得分:1)

您可以使用新的f字符串。

for i in lst:
    my_regex =re.search(fr'\b{i}\b', sent)
    print(my_regex.group())

答案 1 :(得分:0)

[item for item in lst if re.search(r'\b%s\b' % item, sent)]

或者你可以使用更快的解决方案(~38次):

[s for s in sent.split() if s in lst]

输出:

['text1', 'text3']