2016-11-08 61 views
1

需要一些帮助。 想与规则替换代码中的所有方法的名字:用较低的第一个字符替换方法名称

MethodName -> methodName (need for cpp translation). 

可惜的是,我需要在我的正则表达式与new开始所有的情况下逃脱。

我的正则表达式:

`[>\\.\\s]+[A-Z]+[a-zA-Z0-9_]*\\({1}` 

它匹配

`>MethodName(`, `.MethodName(` ` MethodName(` 

而且在最后一种情况下可以new ClassName

如何避免这种情况?

+1

resharper允许你定义你的命名风格。将“方法属性和事件”设置为'lowerCamelCase'并让Resharper进行清理。 –

回答

2

你可以使用这个表达式:

(?<!new)[>.\s]+[A-Z]+\w*\(

(?<!new)是一个例如,它会确保方法名称之前没有关键字new

我也:

  • 改变[a-zA-Z0-9_]\w因为它相当于;
  • 删除多余的量词{1}
+0

我同意你的更改。你也可以在[AZ] + \ w *'' –

+0

关于量词{1}:根据'SomeMethod()'的情况我认为它不是多余的SomeMethod2() '。但无论如何,其他任何事情都很好。 – ArgorAvest

+0

@ArgorAvest'{1}'是隐式的,'a' =='a {1}'@BrianStephens yep,'+'也是多余的。非常感谢! –

0

您是否需要找到领先的空间?如果不是:

  • 第一个字符可能是>或。
  • 其次是大写字母
  • 零个或多个字母,数字Follwed或下划线
  • 其次(

    [>|\.]([A-Z][a-zA-Z0-9_])*\(