我有正则表达式匹配表达式的一部分;我被困在需要匹配符号的部分上,并用相反的符号替换它们。所以,如果我得到一个输入字符串<我必须用>替换它和< =替换为> =反之亦然....但我很困惑,不知道该怎么做。
我只能接受一个有这些有效运算符之一的字符串。
到目前为止,这是我的正则表达式:
(\w+)(\s)*([(?P<less><)?(?P<greater>>)?(?P<gEqual>>=)?(?P<lEqual><=]) .
(\s*)*(\w+)
^^问题是它与&lt; =或&gt; =
不匹配这是我的替换字符串,显然不完整,但我甚至无法将其解决为部分问题:
\5\b<\b(?=>)\1
另外, 我正在使用regex101.com检查我的东西。 请帮忙!
a&lt; b应该变成b>一个 asda&lt; = c应该变成c&gt; ASDA
答案 0 :(得分:0)
我认为这应该能够匹配所有运营商:
(?<less><(?!=))|(?<lEqual><=)|(?<greater>(?<!=)>)|(?<gEqual>=>)
它使用负向前看以防止捕获小于或等于&#39; “少”中的运算符&#39;捕获组。同样,它使用负面外观来防止捕获大于或等于&#39;运营商在&#39;大于&#39;捕获组。
AFAICT它至少与您的示例相符,您可以在https://regex101.com/r/GvB7nA/1
看到