您可以|
像这样在正则表达式中使用运算符
re.compile("(" + "|".join(regex_strings) + ")")
所以,正则表达式变成了这样(test1|test2|test3)
。您可以在此处查看此正则表达式的含义http://regex101.com/r/pR5pU1
样品运行:
import re
regex_strings = ['test1','test2','test3']
regex = re.compile("(" + "|".join(regex_strings) + ")")
strgs = ['This is a test1','This is a test2','This is a test1','This is a test1','This is a test3']
print [strg for strg in strgs if regex.search(strg)]
输出
['This is a test1', 'This is a test2', 'This is a test1', 'This is a test1', 'This is a test3']
编辑:如果您只想返回匹配的部分,
import re
regex_strings = ['test1','test2','test3']
regex = re.compile("(" + "|".join(regex_strings) + ")")
strgs = ['This is a test1','This is a test2','This is a test1','This is a test1','This is a test3']
result = []
for strg in strgs:
temp = regex.search(strg)
if temp:
result.append(temp.group())
print result
输出
['test1', 'test2', 'test1', 'test1', 'test3']