2016-11-08 24 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_])*\(