C# 用较低的第一个字符替换方法名

C# 用较低的第一个字符替换方法名,c#,regex,C#,Regex,我需要一些帮助。 要用规则替换代码中的所有方法名称: MethodName -> methodName (need for cpp translation). 不幸的是,我需要在我的正则表达式中转义以new开头的所有情况 我的正则表达式: `[>\\.\\s]+[A-Z]+[a-zA-Z0-9_]*\\({1}` 它符合 `>MethodName(`, `.MethodName(` ` MethodName(` 但在最后一种情况下,也可以是新类名 如何避免这种情况?是否

我需要一些帮助。 要用规则替换代码中的所有方法名称:

MethodName -> methodName (need for cpp translation).
不幸的是,我需要在我的正则表达式中转义以
new
开头的所有情况

我的正则表达式:

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

`>MethodName(`, `.MethodName(` ` MethodName(`
但在最后一种情况下,也可以是
新类名


如何避免这种情况?

是否需要查找前导空格?如果没有:

  • 第一个字符可以通过>或
  • 后跟大写字母
  • 后跟零个或多个字母、数字或下划线
  • 接(

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


您可以使用此正则表达式:

(?<!new)[>.\s]+[A-Z]+\w*\(
(?。\s]+[A-Z]+\w*\(
(?是一个负查找,它将确保方法名称前面没有关键字
new

我还:

  • [a-zA-Z0-9\
    更改为
    \w
    ,因为它是等效的
  • 删除多余的量词
    {1}

Resharper允许您定义命名样式。将“方法属性和事件”设置为
lowerCamelCase
,并让Resharper进行清理。我同意您的更改。您还可以删除
[A-Z]+\w*
中多余的
+
关于量词{1}:根据case
SomeMethod().SomeMethod2()
,我认为它不是多余的。但无论如何,其他的都是好的。@ArgorAvest
{1}
是隐式的,
a
=
a{1}
@BrianStephens是的,
+
也是多余的。谢谢!