本片正则笔记主要包括分组匹配,正则委托实现,正则中实现注释
/// <summary>
/// 正则分组匹配:例如,翻转ip
/// </summary>
/// <param name="match"></param>
/// <returns></returns>
static string RegexMahtEval(Match match)
{
StringBuilder sb = new StringBuilder();
sb.Append(match.Groups["part4"] + ".");
sb.Append(match.Groups["part3"] + ".");
sb.Append(match.Groups["part2"] + ".");
sb.Append(match.Groups["part1"] );
return sb.ToString();
}
/// <summary>
/// 使用这则委托
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
#region 正则表达式分组
//正则表达式分组
//可以简写成这样
/* @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"\k<part1>\." +
@"\k<part1>\." +
@"\k<part1>\.";**/
//但为了区分分组所匹配的内容,用了不同的命名;
string pattern = @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])";
#endregion
string strMatch = "**192.168.1.1 ssss195.168.1.126^^^";
Regex regex = new Regex(pattern);
Match match = regex.Match(strMatch);//返回匹配的math;
//matchEvaluator委托:用法,每当找到一个匹配就调用这个委托来执行你自己的方法
MatchEvaluator mEval = new MatchEvaluator(Form1.RegexMahtEval);
textBox1.Text = regex.Replace(strMatch, mEval);
}
private void Form1_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 使用正则分组
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
string pattern = @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])";
string strMatch = "**192.168.1.1 ssss195.168.1.126^^^";
Regex regex = new Regex(pattern);
//命名组 :简单的使用${name}语法,name就是组名;
//使用$&来引用完整的文本;
//使用s' 替换输入字符窜中某个匹配之间直到匹配之前匹配的部分如:【**192.168.1.1 ssss195.168.1.126^^^】 匹配为:195.168.1.126 s'为^^^
//使用s` 【备注`为数字键1前那个符号】替换匹配后所有文本。如:【**192.168.1.1 ssss195.168.1.126^^^】 匹配为:195.168.1.126 s`为**192.168.1.1 ssss
string replace = @"${part4}.${part3}.${part2}.${part1}" +
"(the reverse of $&)" + "\r\n" +
"(using $ ` of $`)" + "\r\n" +
"(using $ 'of $')" + "\r\n-----------------------\r\n";
textBox1.Text = regex.Replace(strMatch, replace);
}
/// <summary>
/// Regex中正则匹配匹配表达式写注释 以#开头写内容换行结束
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
string pattern = @"#fisrt part match
(?<part1>[01]?\d\d
# or
?|2[0-4]\d|25[0-5])\.
#or
(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\.
#or
(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\.
#or
(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])";
string strMatch = "**192.168.1.1 ssss195.168.1.126^^^";
Regex regex = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);
Match match = regex.Match(strMatch);
while (match.Success)
{
textBox1.Text += match.Value;
match = match.NextMatch();
}
}