正则表达式:Python中的组名的条件替换

时间:2016-12-15 03:29:33

标签: regex python-2.7

string1:“4-5%”和string2:“5%”
预期产出:“百分比4到百分比5”,“百分比5”。

我的正则表达式:

percent = 
    {
        "pattern": "(?P<range>(?P<from>[\d.]+)(%)?[?\-~ ~〜~—])?(?P<to>[\d.]+)%",
        "repl": r"(?(range)percent \g<from>to )percent\g<to>)",
        "string": thestring
    }

print re.sub(**percent)

我得到的第一个(percent["string"]="4-5%")是(?(range)percent 5 to)percent 7),它不适用于第二个(当string =“5%”时)

我知道repl的值不能包含条件,但是(如何)我可以实现我想要的?我可以在这种情况下只使用两个正则表达式吗?

1 个答案:

答案 0 :(得分:0)

这样的东西?

import re

a="""
4-5%
hello world 4-5% hello world
5%
"""
print re.sub(r'(\d)%', r'\1', re.sub(r'-',r' to ',re.sub(r'(\d(?=(-\d)?%))',r'percent \1',a)))

输出:

percent 4 to percent 5
hello world percent 4 to percent 5 hello world
percent 5