Skip to main content
 首页 » 编程设计

Python 正则表达式 : changing conditional operators

2025年05月04日21mengfanrong

在 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