在python中用字符串替换regex变量

时间:2014-04-18 13:16:45

标签: python regex

我的情况是我有一个像这样的正则表达式

regex_string = r'(?P<x>\d+)\s(?P<y>\w+)'
r = re.compile(regex_string)

并且,在我开始与之匹配之前,我想用一个特定的值替换名为x的正则表达式组,比如2014.这样,当我搜索这个正则表达式的匹配时,我们只会找到x=2014的内容。解决这个问题的最佳方法是什么?

这里的挑战是原始正则表达式regex_string和任意替换值x=2014都由最终用户指定。在我的脑海中,理想的事情是拥有像replace_regex

这样的功能
r = re.compile(regex_string)
r = replace_regex_variables(r, x=2014)
for match in r.finditer(really_big_string):
    do_something_with_each_match(match)

我对任何解决方案持开放态度,但特别感兴趣的是理解是否有可能在finditer返回{strong>之后}来检查匹配的表现。换句话说,最好不要

re

1 个答案:

答案 0 :(得分:0)

你想要这样的东西,不是吗?

r = r'(?P<x>%(x)s)\s(?P<y>\w+)'
r = re.compile(r % {x: 2014})
for match in r.finditer(really_big_string):
    do_something_with_each_match(match)