正则表达式在' ='周围添加空格在C ++代码中,我做错了什么?

时间:2013-01-15 13:04:08

标签: c++ regex

我想创建一个正则表达式,它允许我在C ++代码中添加赋值运算符周围的空格(因为我更喜欢这种风格),例如这样

x=something

变为

x = something

但是

if(y==x)

不会成为

if(y = = x)

等包括!=<=>=

我对正则表达式相对较新,并尝试了以下内容:

(?<![\s=])(=)(?!=)

我认为这将是一个很好的首发,但这似乎不匹配。有人可以在这里解释我对正则表达式的理解吗?

修改

使用在Code :: Blocks IDE

中不匹配的正则表达式的示例

Code::BLocks regex attempt

2 个答案:

答案 0 :(得分:3)

尝试以下操作:(?<![<>=!])\s*=\s*(?!=)替换为=

OR

([^<>=!])\s*=\s*([^=])已替换为\1 = \2

由于模式未锚定,因此需要两种外观断言。

实际上,你自己的正则表达式在字符类中缺少<>。我对它进行了一些改进,看看演示。

第一个正则表达式的演示+解释:http://regex101.com/r/kU1hP2 演示+第二个正则表达式的解释:http://regex101.com/r/lK1oQ3

注意:\s匹配空格!

答案 1 :(得分:1)

这并不涵盖所有内容。

如果你想要空格,你需要多考虑一下。

试试这个 http://regex101.com/r/oJ8jJ3

((!|<|>|=|\+|%)=|=)

并使用\ 1分隔符

在某些样式的正则表达式中,可能如下所示:

s/((!|<|>|=|\+|%)=|=)/ \1 /g
祝你好运! 附: 案件考虑:

x=something
if(y==x)
if(y <=x)
if(y>=x)
y+=x;
y%=x;