0

emを少し学ぶために正規表現をいじっていますが、理解できない問題が発生しました。

私はこの正規表現を持っています

\s+(public|private|protected|internal|sealed).*[^{.}]\(.*

c# の関数宣言の行と一致しすぎます。しかし、それは機能しますが、この行にも一致します

private bool FooBar { get { return _fooBar != null && !_fooBar.BarFoo.Any(); } }

この条件を正規表現に追加して解決しようとしました[^{.}]が、一致し続けます。誰かがここで私を助けることができますか?

4

1 に答える 1

2

新しい条件の.*前にある は、中括弧を含むすべてのものと一致します。

したがって、次のようなものが必要になる場合があります。

\s+(public|private|protected|internal|sealed)\s+[^{.}]+\(

そうは言っても、最終的に何をしたいかによっては、正規表現ではなく実際のパーサーの方が適切な場合があります。

于 2013-05-27T12:33:24.873 に答える