我们正在尝试编写一个程序来存储项目的所有变量,参数,方法,类名等。然后我们用正确的名称替换方法。
基本上我使用Directory.GetFiles()
和StreamReader
来读出.CS文件。让我们说以下是我们从读出那些.CS文件得到的结果:
string Code = @"public static void _MET_ClassName_MethodName() { var _VAR_MethodName_Foo = \"Test\"; }";
实际上,字符串Code
更长,包含更多方法和变量定义。最后,我还要添加参数和类名。
我试图用RegEx获取方法和变量名称,虽然没有任何效果,我不知道如何实现我正在尝试的。符号名称由以下内容组成:_ABC_Segment1_Segment2
。 ABC可以是任何3个字母的值,Segment1和Segment2将始终只包含字母数字字符(这些段的长度是可变的),下划线总是在那里。
我尝试阅读RegEx并使用regexr.com来试试"试试"虽然我从未走远。任何帮助表示赞赏。
以下我尝试过:
/_MET_([A-Z]\w+)/g
这不是变量,因为其中_MET_
已固定,并且它在Segment1和Segment2中没有区别。
答案 0 :(得分:2)
以下将会这样做:
_[A-Za-z]{3}_[A-Za-z0-9]*_[A-Za-z0-9]*
击穿
_ //match first underscore
[A-Za-z]{3} //match 3 alpha characters
_ //match separator underscore
[A-Za-z0-9]* //match any alpha-numeric string (segment1)
_ //match another underscore
[A-Za-z0-9]* //match alphanumeric string (segment2)
或者,因为看起来第一部分(MET或VAR)可能来自可接受值的一小部分,如果您只想匹配字符串的那一部分中的几个值,则以下内容将起作用: p>
_(MET|VAR)_[A-Za-z0-9]*_[A-Za-z0-9]*
(MET|VAR)
部分匹配MET或VAR。