可以说我有一个字符串列表,
string_lst = ['fun', 'dum', 'sun', 'gum']
我想做一个正则表达式,在其中的一点上,我可以匹配列表中的任何字符串,例如一个组:
import re template = re.compile(r".*(elem for elem in string_lst).*") template.match("I love to have fun.")
正确的方法是什么?还是必须制作多个正则表达式并将它们分别与字符串匹配?
string_lst = ['fun', 'dum', 'sun', 'gum'] x="I love to have fun." print re.findall(r"(?=("+'|'.join(string_lst)+r"))",x)
您不能使用match它,因为它会从开始就匹配。请findall改为使用。
match
findall
输出:['fun']
['fun']
使用search您只会得到第一场比赛findall。因此请改用。
search
lookahead如果重叠的匹配不是从同一点开始,也可以使用。
lookahead