Python正则表达式:使用组在一次传递中进行多个不同的替换

Python正则表达式:使用组在一次传递中进行多个不同的替换,python,regex,substitution,Python,Regex,Substitution,我的任务是获取一个字符串,在该字符串中查找两种不同类型匹配的所有实例,并对每种类型的每个匹配执行类似但不同的替换,所有这些都使用单个正则表达式和单个传递re.sub() 具体来说,我正在寻找任何=替换它们。需要替换的每个比较运算符都位于\w*定义的两个单词之间,并且两边都有零个或多个空格\s* 我发现了一个正则表达式,它可以找到所有必要的匹配项,并将它们归为有用的组: ((\b\w*(\s*<\s*)\w*\b)|(\b\w*(\s*<=\s*)\w*\b))+ 以下是一些输入/输

我的任务是获取一个字符串,在该字符串中查找两种不同类型匹配的所有实例,并对每种类型的每个匹配执行类似但不同的替换,所有这些都使用单个正则表达式和单个传递
re.sub()

具体来说,我正在寻找任何
=
替换它们。需要替换的每个比较运算符都位于
\w*
定义的两个单词之间,并且两边都有零个或多个空格
\s*

我发现了一个正则表达式,它可以找到所有必要的匹配项,并将它们归为有用的组:

((\b\w*(\s*<\s*)\w*\b)|(\b\w*(\s*<=\s*)\w*\b))+
以下是一些输入/输出示例:

输入字符串:

“v1=v8”

运行替换将产生:

“v1>v2 v3>=v4 v5>v6 v7>=v8”


将我的模式和输入字符串插入到for python中,将以我描述的方式显示我的模式如何匹配输入字符串

您只需将=设置为可选,并捕获@maxymoo可能的副本周围的部分?但我不允许多次调用sub(),因此我不确定该解决方案是否适用。这个问题的答案可能是我提出的正则表达式不可能实现。您的问题不清楚,因为缺少示例输入和预期输出。你的模式看起来是错误的,不能解释你想做什么。在你的问题中添加示例。愚蠢的问题(:为什么不?@BobbleBobble因为匹配必须在两个单词
\w*
之间找到比较运算符,而且
=
不能在一个单词
\w*
中,正则表达式将无法匹配
,这非常简单而且非常有用。只要看到
'\1>\2'
就可以帮助我更好地理解它了解如何使用
sub()
方法。
r1 = re.compile(r"((\b\w*(\s*<\s*)\w*\b)|(\b\w*(\s*<=\s*)\w*\b))+")
subStr = r" ??? " 

r1.sub( ???, subStr ??? )
re.sub(r'\b(?<=\w)(\s*)<(=?\s*\w)', r'\1>\2', s)