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的值不能包含条件,但是(如何)我可以实现我想要的?我可以在这种情况下只使用两个正则表达式吗?
答案 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