【发布时间】:2016-01-29 03:03:24
【问题描述】:
假设我有一个字符串列表,
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.")
这样做的正确方法是什么?还是必须制作多个正则表达式并将它们分别与字符串匹配?
【问题讨论】:
-
以
|为胶水连接数组元素,将形成字符串fun|dum|sun|gum,可用于正则表达式。 -
re.search('|'.join(string_lst), input_string) -
any(z in string_list for z in re.findall(r"['\w]+", 'This is just for fun')) -
您关心找到了哪些字符串,还是只关心找到了其中的任何一个?
-
答案还可以,但不是最佳答案,您的问题是指要自动查找正则表达式 r"[fs]un|[dg]u[m]" 吗?这是一个非常有趣的问题,顺便说一句,它是音韵学等领域的基础,但我需要知道你是否打算解决这个问题以及你可以假设相似的长度或至少在插入删除和替换之间进行一些权衡,在什么术语是最小的正则表达式,诸如此类的东西。
标签: python regex string python-3.x