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