字符串的一部分使用正则表达式匹配列表中的任何元素



我想使用regex来确定字符串的某个部分是否包含在我允许的字符串列表中。例如,我想检查

"12_SUMMER_3456"

匹配:

"d*_(SUMMER|FALL|WINTER|SPRING)_d*"

问题是,我想替换">(夏季|秋季|冬季|春季(";带有一个列表:

lst = ["SUMMER", "FALL", "WINTER", "SPRING"]

然后,使用lst,而不是在正则表达式中显式给定它的元素。Python中有类似的东西吗?

您可以加入并插入列表。

regex = r"d*_(" + '|'.join(lst) + r")_d*"

顺便说一句,这相当于

regex = r"_(" + '|'.join(lst) + r")_"

如果比赛边界上可能有什么东西,也可能没有,你可以把它拿出来简化;regex仍然会匹配,不管它是否存在。(如果你正在捕捉或锚定比赛,那么这些当然是出于其他原因所必需的。(

第三方regex库允许您说

regex = r"d*_L<lst>_d*"

其中CCD_ 2当然也是冗余的。你需要pip install regex,然后明显地import regex而不是import re

最新更新