我尝试编写一个正则表达式来匹配条件表达式,例如:
a!=2 1+2<4 f>=2+a
我尝试提取运算符。 我当前的正则表达式是&#34;。+([!=&lt;&gt;] +)。+&#34;
但问题是匹配器总是试图匹配组中可能的最短字符串。
例如,如果表达式是!= 2,则组(1)是&#34; =&#34;,而不是&#34;!=&#34;这是我所期待的。
那么我应该如何修改这个正则表达式来实现我的目标呢?
答案 0 :(得分:1)
您希望匹配由不运算符所包围的运算符。
运营商,在您的定义中:[!=&lt;&gt;]
相反,操作员不是:[^!=&lt;&gt;]
然后尝试:
[^!=<>]+([!=<>]+)[^!=<>]+
答案 1 :(得分:1)
您还可以尝试不情愿或非贪婪的版本(请参阅that other posr进行详细说明)。在您的示例中,它将是:
.+?([!=<>]+).+
但是这个正则表达式可以匹配错误的比较,例如a <!> b
或a =!><=! b
......
答案 2 :(得分:0)
试试这个:
.+(!=|[=<>]+).+
您的正则表达式与单个!
匹配,因为它位于[]
括号中的所有内容都会匹配一个字符,这意味着[!=<>]
可以匹配:!, =, <, >