我想使用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
。