我想改变这个:
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,但我希望最大化自动化。
谢谢!
答案 0 :(得分:2)
这应该适合你:
搜索
/^[^\]]*[\]] ([\w\d_]+)\(ByVal ([^ ]*) As ([^,]*), ByVal ([^ ]*) As ([^,]*)\)( As [\w]+)/gi
替换(带变量值)
Log("Method $2:", $3, "$4", $5)
OR(带变量名)
Log("Method $2:", $2, "$4", $4)
修改强>
对于循环,您可以尝试3个正则表达式。首先只是改变你的开始:
搜索
/^[^\]]*[\]] ([\w\d_]+)/gi
替换
Log("Method $1:",
然后你会做“循环”,虽然没有真正循环。
搜索
/\({0,1}ByVal ([^ ]*) As([^,\)]*[\)]{0,1})/gi
替换
"$1:", $2
然后删除结尾
搜索
/\).*/gi
替换
)