如何将单个等号与正则表达式匹配?

Den*_*nko 3 c# regex match

我有以下表达式:

if(x == a+b) b=a+2; else x = 1;
Run Code Online (Sandbox Code Playgroud)

我需要匹配一个等号=.不是==,而不是====等等.并且它应匹配标志周围没有空格,只是等号.我有一个怪物般的注册.表达式匹配上面代码中的所有内容,我需要的只是单个等号.这是我的expr:

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

虽然它可能不是最佳变体(我确定它不是:)),我需要通过管道添加"等于匹配"| 进入我的表达.

看起来很奇怪,但我没有找到通过stackoverflow问题搜索的解决方案......

Eri*_*rik 7

您需要使用前瞻和后视零长度断言.你正在寻找的正则表达式应该是(?<!=)=(?!=).这要求我们找到一个=不等于等号(?<!=)而不是等号的符号(?!=).