次のような文字列に一致する正規表現を構築しようとしています
1.) $(Something)
2.) $(SomethingElse, ")")
3.) $(SomethingElse, $(SomethingMore), Bla)
4.) $$(NoMatch) <-- should not match
5.) $$$(ShouldMatch) <-- so basically $$ will produce $
テキストで。
EDIT: Something、SomethingElse、NoMatch、ShouldMatchという単語は、他の単語でもかまいません-それらはマクロの名前です。一致させようとする文字列は、テキスト内で発生する可能性がある「マクロ呼び出し」であり、その結果に置き換える必要があります。構文の強調表示のためだけに正規表現が必要です。完全なマクロ呼び出しが強調表示されます。3番は現在あまり輸入されていません。働くためには1番と2番が必要です。4 番と 5 番が上記のように機能しない場合は問題ありませんが$(
、a の後に$
は一致しません。
現在、私は持っています
(?<!\$)+\$\(([^)]*)\)
構造を適用する別の方法が見つからない場合$(
は、先行する がない場合はany に一致します。$
$$
私がやりたい次のステップは、閉じ括弧が引用符で囲まれている場合は無視することです。どうすればこれを達成できますか?
編集次のような入力がある場合
Some text, doesn't matter what. And a $(MyMacro, ")") which will be replaced.
完全な'$(MyMacro, ")")'
ものが強調表示されます。
すでにこの表現を持っている
"(?:\\\\|\\"|[^"])*"
引用符のエスケープを含む引用符用。しかし、それらの間のすべてを無視する方法でこれを適用する方法がわかりません...
PS .NET を使用して正規表現を適用しています。したがって、バランスの取れたグループがサポートされます。これをすべて適用する方法がわかりません。