在 Python 中,我尝试使用一个正则表达式,用等效的大于 (>) 或大于或等于等效表达式替换所有小于 (<) 和小于等于 (<=) 的表达式。例如,“a < b”将替换为“b > a”。我相信我的正则表达式代码是正确的(如下所示),但我不知道如何进行代码的替换部分。由于正则表达式是分组的,我必须使用反向引用来访问我想要切换的表达式部分。
c = re.compile(r"\b(\w+)\s*"
r"((<)|(>)|(<=)|(>=))"
r"\s*(\w+)\b")
subStr = r"\7 #WHAT GOES HERE \1"
我可以使用\7 获取条件运算符右侧的“单词”,使用\1 获取左侧的“单词”。我如何翻转运算符(operator)标志??
为了实际使用替换,我使用了这种格式的东西:
print(c.sub(subStr, "a < b"))
另外,我知道我不必在这里使用正则表达式,但我正在努力让它与一个正则表达式一起工作。
请您参考如下方法:
您可以使用 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
