C#正则表达式使用
/////正则匹配
RegexOptions rop = GetOptions();
Regex regexTest = new Regex(this.txtRegex.Text, rop);
string x=this.txtString.Text;
if (regexTest.IsMatch(x))
{
MatchCollection mcl=regexTest.Matches(x);
int mcount = mcl.Count;
richTextBox1.AppendText("字符串匹配,匹配数量为:“" +mcount + "\r\n");
for (int i = 0; i < mcount; i++)
{
Match am = mcl[i] as Match;
richTextBox1.AppendText("*****************第" + i + "匹配****************\r\n");
for (int j = 0; j < am.Groups.Count; j++)
{
richTextBox1.AppendText("组" + j.ToString() + ",组名("+regexTest.GetGroupNames()[j]+"):" + am.Groups[j].Value + "\r\n");
}
}
}
else
{
richTextBox1.AppendText("字符串不匹配\r\n");
}
////正则替换
RegexOptions rop = GetOptions();
Regex regexTest = new Regex(this.txtRegex.Text, rop);
string x = this.txtString.Text;
string strp = Microsoft.VisualBasic.Interaction.InputBox("输入替换后的字符", "输入替换后的字符", "", this.Left, this.Top);
string result = regexTest.Replace(x, strp);// regexTest.Replace(x, new MatchEvaluator(frmRegex.CapText));//可以设置定义替换
richTextBox1.AppendText("替换后字符为:\r\n");
richTextBox1.AppendText(result+"\r\n");
//可自定义替换方法
static string CapText(Match m)
{
string x = m.ToString();
string result = (int.Parse(x) * 2).ToString();
return result;
}
/////正则拆分
RegexOptions rop = GetOptions();
Regex regexTest = new Regex(this.txtRegex.Text, rop);
string x = this.txtString.Text;
string[] result = regexTest.Split(x);
richTextBox1.AppendText("拆分为:" + result.Length + "组\r\n");
int i = 1;
foreach (string m in result)
{
richTextBox1.AppendText(string.Format("第{0}组, 长度{1},内容为:{2}\r\n", i.ToString(), m.Length, m.ToString()));
}
/////正则表达式参数
private RegexOptions GetOptions()
{
RegexOptions rop = RegexOptions.None;
if (chkIgnoreCase.Checked)
{
rop |= RegexOptions.IgnoreCase;
}
if (chkBlack.Checked)
{
rop |= RegexOptions.IgnorePatternWhitespace;
}
if (chkMultiLine.Checked)
{
rop |= RegexOptions.Multiline;
}
if (chkRightToLeft.Checked)
{
rop |= RegexOptions.RightToLeft;
}
if (chkSingleLine.Checked)
{
rop |= RegexOptions.Singleline;
}
return rop;
}
注:本文字为本人总结后发布,如果有雷同,纯属巧合
本人邮箱:freedomjim@gmail.com,如有疑问和交流欢迎发邮件过来一起讨论,一切成长,谢谢!