通过前缀和段查找带有RegEx的字符串

时间:2015-06-19 16:28:39

标签: c# regex

我们正在尝试编写一个程序来存储项目的所有变量,参数,方法,类名等。然后我们用正确的名称替换方法。 基本上我使用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中没有区别。

1 个答案:

答案 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。