我想创建一个正则表达式,它允许我在C ++代码中添加赋值运算符周围的空格(因为我更喜欢这种风格),例如这样
x=something
变为
x = something
但是
if(y==x)
不会成为
if(y = = x)
等包括!=
,<=
,>=
我对正则表达式相对较新,并尝试了以下内容:
(?<![\s=])(=)(?!=)
我认为这将是一个很好的首发,但这似乎不匹配。有人可以在这里解释我对正则表达式的理解吗?
修改
使用在Code :: Blocks IDE
中不匹配的正则表达式的示例
答案 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;