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,如有疑问和交流欢迎发邮件过来一起讨论,一切成长,谢谢!

posted @ 2010-06-23 11:20  自由之风  阅读(147)  评论(0编辑  收藏  举报