gpt4 book ai didi

Python 正则表达式 : changing conditional operators

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:21 25 4
gpt4 key购买 nike

在 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

关于Python 正则表达式 : changing conditional operators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23097814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com