Python正则表达式:改变条件运算符

时间:2014-04-16 02:14:44

标签: python regex grouping substitution conditional-operator

在Python中,我试图使用一个正则表达式来替换所有小于(<)和小于等于(< =)的表达式,其等价物大于(>)或大于或等于当量。例如," a< B"将替换为" b>一个&#34 ;.我相信正则表达式的代码是正确的(如下所示),但我不知道如何进行代码的替换部分。由于正则表达式已分组,因此我必须使用反向引用才能访问要切换的表达式的各个部分。

c = re.compile(r"\b(\w+)\s*"
           r"((<)|(>)|(<=)|(>=))"
           r"\s*(\w+)\b")
subStr = r"\7 #WHAT GOES HERE \1"

我可以使用\ 7来获取&#34;字&#34;在条件运算符的右侧,\ 1得到左侧的一个。如何翻转操作符???

要实际使用替换,我使用的格式为:

print(c.sub(subStr, "a < b"))

另外,我知道我不必在这里使用正则表达式,但我正在尝试使用正则表达式。

1 个答案:

答案 0 :(得分:1)

您可以使用re.sub中的函数执行以下操作:

import re

txt='''\
a<b
a<=b'''

di={'<':'>', '<=':'>='}                       # expand as needed
print re.sub(r'\b(\w+\s*)(<|<=)(\s*\w+)',     # use your regex if wanted
           lambda m: m.group(3)+di[m.group(2)]+m.group(1), txt)

打印:

b>a
b>=a