3

これを変換したい:

Public [Function|Sub] XXXX(ByVal param1 As aaaa, ByVal param2 AS bbbb) As cccc

これに:

Log("Method XXXX:", "param1", param1, "param2", param2)

パラメータの数は可変です。

純粋な正規表現でそれを行うことはできますか?もしそうなら、どうすればできますか? http://gskinner.com/RegExr/
のような単純なツールを使用して、メソッドごとに手動で行います。

私はここにいます:

Public (Function|Sub) ([\w\d_]+)\((ByVal .* As .*)*\)( As [\w]+)?
Log("Method $2:", $3)

これは私にこれを与えます:

Log("Method XXXX:", ByVal param1 As aaaa, ByVal param2 AS bbbb)

小さな一歩ですが、大きな一歩ではありません...

問題は、繰り返しのサブアイテムをキャッチできるかどうか (およびその方法) がわからないことです。他の質問は、それが不可能であることを示していますか?

コードではなく、純粋な正規表現で行う必要があります。それ以外の場合は、copypasta を使用しますが、自動化を最大限に活用したいと考えています。

ありがとう !

4

1 に答える 1

2

これはあなたのために働くはずです:

探す

/^[^\]]*[\]] ([\w\d_]+)\(ByVal ([^ ]*) As ([^,]*), ByVal ([^ ]*) As ([^,]*)\)( As [\w]+)/gi

置換 (変数値で)

Log("Method $2:", $3, "$4", $5)

OR (変数名付き)

Log("Method $2:", $2, "$4", $4)

例: http://regexr.com?357f4

編集

ループの場合、3 つの正規表現を試すことができます。最初は単にあなたの始まりを変えるでしょう:

探す

/^[^\]]*[\]] ([\w\d_]+)/gi

交換

Log("Method $1:", 

例: http://regexr.com?357fp

次に、実際にはループではありませんが、「ループ」を実行します。

探す

/\({0,1}ByVal ([^ ]*) As([^,\)]*[\)]{0,1})/gi

交換

"$1:", $2

例: http://regexr.com?357g2

次に、エンディングを削除します

探す

/\).*/gi

交換

)

例: http://regexr.com?357g5

于 2013-06-13T15:56:53.247 に答える