Skip to main content
 首页 » 编程设计

c#之用于在大型 .cs 文件中查找事件处理程序的正则表达式

2024年02月13日31leader

(VS2012 C#) 我有一个没有区域和结构的大 .cs 文件。使用“查找和替换”工具,我想找出所有事件处理程序,如:button_Click、window_Loaded 等。因此它具有格式:text1_text2,其中 text1 和 text2 必须存在(最小长度为 1)并用下划线 _ 分隔。 正则表达式如何?

提前谢谢你。

杂志 PS:到现在为止我从来没有使用过“强大”的正则表达式,因为我不需要它,但现在是我使用它的时候了。当然,在这里问之前我已经尝试阅读了vs2012的在线帮助并尝试了很多次,但都失败了。

请您参考如下方法:

试试这个正则表达式:

([a-z_]\w*)_([a-z\d]+) 

匹配:

Some_Button1_Click

Button1_Click

Some_strange_Button1_Click

示例代码:

const string strRegex = @"([a-z_]\w*)_([a-z\d]+)"; 
const RegexOptions myRegexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant; 
Regex myRegex = new Regex(strRegex, myRegexOptions); 
string text = @"Some_Button1_Click"; 
 
var matches = myRegex.Matches(text) 
              .Cast<Match>() 
              .Select(x => new { 
                      AllText = x.Groups[0],  // all text      ==> "Some_Button1_Click" 
                      Object = x.Groups[1],   // ([a-z_]\w*)   ==> "Some_Button1" 
                      Event = x.Groups[2]     // ([a-z\d]+)    ==> "Click" 
                  }) 
              .ToList();