Java正则表达式(分组)

时间:2014-10-20 20:12:20

标签: java regex

我尝试编写一个正则表达式来匹配条件表达式,例如:

a!=2     1+2<4       f>=2+a

我尝试提取运算符。 我当前的正则表达式是&#34;。+([!=&lt;&gt;] +)。+&#34;

但问题是匹配器总是试图匹配组中可能的最短字符串。

例如,如果表达式是!= 2,则组(1)是&#34; =&#34;,而不是&#34;!=&#34;这是我所期待的。

那么我应该如何修改这个正则表达式来实现我的目标呢?

3 个答案:

答案 0 :(得分:1)

您希望匹配由运算符所包围的运算符。

运营商,在您的定义中:[!=&lt;&gt;]

相反,操作员不是:[^!=&lt;&gt;]

然后尝试:

[^!=<>]+([!=<>]+)[^!=<>]+

答案 1 :(得分:1)

您还可以尝试不情愿或非贪婪的版本(请参阅that other posr进行详细说明)。在您的示例中,它将是:

.+?([!=<>]+).+

但是这个正则表达式可以匹配错误的比较,例如a <!> ba =!><=! b ......

答案 2 :(得分:0)

试试这个:

.+(!=|[=<>]+).+

您的正则表达式与单个!匹配,因为它位于[]

括号中的所有内容都会匹配一个字符,这意味着[!=<>]可以匹配:!, =, <, >

相关问题