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

2 投票
1 回答
566 浏览
提问于 2025-04-18 02:54

在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来获取左边的那个。那么,我该怎么翻转运算符呢?

实际上,我使用的替换格式是这样的:

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

另外,我知道在这里不一定要用正则表达式,但我想试着用它来实现。

1 个回答

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 

撰写回答