2015-02-11 5869 views
0

我有以下表达式:如何使用正则表达式匹配单个等号?

if(x == a+b) b=a+2; else x = 1; 

我需要匹配单个等号=。不==,不====等等。它应该符合标志周围没有空格,只是等号。 我有一个相当怪物般的reg。表达式匹配上面代码中的所有内容,我需要的只是单个等号。 这里是我的EXPR:

/\bif\b|\belse\b|\(|\)|\+|\-|\*|\\|\>|\<|\<=|\>=|(?<![!=])[!=]=(?!=)|([a-zA-Z][a-zA-z0-9_]*)|(\d+\.?\d*)/g 

虽然可能不是最优的变种(我敢肯定,它不是:)),我需要添加“等于匹配”通过管道|进入我的表情。

奇怪,似乎,但我没有找到解决办法,通过计算器问题搜索...

回答

2

这是最简单的我能想出:

(?<!=)=(?!=) 
0

使用空字符串时,建议先行和后退的答案可能会失败。相反,使用(^|[^=])=($|[^=])

  • (^|[^=]):字符串的开始或不是=字符
  • =:本=字符
  • ($|[^=]):无论是字符串的结束或不是=字符