我正在制作一个代码清理工具,它会自动将我的代码格式化为我公司的C ++代码风格标准。
一个这样的标准是方法名称必须在(
之前有一个空格。
void Method (...);
我想使用正则表达式来匹配这些括号,以便我可以用(
替换(
。
由于这只适用于方法签名,我想忽略if(...)
,while(...)
等字符串。
我的想法是使用否定前瞻来确保该行不包含“C ++单词”
^(?!if|for|switch|do|while).+(\()
并使用负面的lookbehind确保(
前面没有空格。
(?<! )\(
这些可以单独完成,但我很难将它们组合起来。 首先,这是一种合理的方法吗?有没有更好的办法?
更重要的是,如何选择(
?
答案 0 :(得分:1)
你需要使用负面的lookbehind断言。
(?<!\b(if|for|switch|do|while))\(
或
(?<!\bif|\bfor|\bswitch|\bdo|\bwhile)\(
或
(?<!\s)(?<!\bif|\bfor|\bswitch|\bdo|\bwhile)\(
替换为:
(