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

本文关键字:事件处理 程序 正则表达式 查找 cs 文件 用于 | 更新日期: 2023-09-27 18:32:57

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

提前谢谢你。

马格PS:到目前为止,我从未使用过"强大的"正则表达式,因为我不需要它,但现在是时候使用它了。当然,在我在这里询问之前,我已经尝试阅读vs2012的在线帮助并尝试了很多次,但失败了。

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

试试这个正则表达式:

([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();

你的意思是像

[a-zA-Z0-9]+_[a-zA-Z]+

但是,如果生成了事件处理程序,也可以搜索object senderEventArgs e

Sub {[A-Za-z0-9]+}'_{[A-Za-z0-9]+}

请记住,如果您在 Visual Studio 中使用正则表达式并且还需要替换函数,则需要这些大括号。替换文本中的术语 '1'2将引用由查找文本中的大括号标识的相应捕获组。

(?i)[a-z0-9]+'_[a-z]+

这应该有效,它会找到一个字母 1 次或更多次[a-z]+然后是下划线'_然后再次[a-z]+. (?i)使其不区分大小写,因此无论是否大写,都会发现字母。