我想匹配代码中的所有二进制运算符,并确保它们被空格包围(出于编码风格的目的)。如果需要,必须添加空格。
我正在使用emacs,我对可以使用replace-regexp
或类似的东西充满信心。
二进制运算符仅适用于C语言。现在,我有一些不详尽的案例研究:
a=b
将成为a = b
a+=b
将成为a += b
a-=b
等...
a*=b
a/=b
a= b
将成为a = b
a+= b
将成为a += b
等...
a =b
将成为a = b
a +=b
将成为a += b
等...
a = b
或a += b
等...无需更改(我们不想添加更多空格)
我尝试匹配此正则表达式:[^ ]\\+?\\-?\\*?\\/?=[^ ]
的意思是=
符号用右边的空格和任何算术运算符(+*-/
)以外的任何字符进行一次或零次(使用?
)开头,后面要加上空格以外的任何其他字符。
我在这里是因为这些功能至少在re-building
emacs函数下不起作用。比赛是错误的。有人有帮助的想法吗?
P.S:我专注于那些正则表达式,因为+
,*
和-
符号是正则表达式中的特殊字符。但我希望将来能够将此功能应用于所有C二元运算符。
P.P.S:我知道*
字符和指针会出现问题,但我保留以备后用...
答案 0 :(得分:1)
https://github.com/davidshepherd7/electric-operator
似乎值得一试。告诉您可能正在使用哪种主模式。
答案 1 :(得分:0)
正则表达式不适用于代码缩进,因为它们会匹配所有内容,包括字符串常量中的子字符串,注释中的字符串等。您可以创建自己的缩进样式,或者某些内置样式可以满足您的需求:https://www.emacswiki.org/emacs/IndentingC < / p>