首页 > 代码库 > 正则表达式的使用(C#)

正则表达式的使用(C#)

1, C#中与正则表达式相关类。

C#中与正则表达式相关类的几个常用类是Regex,Match,Group,Captrue,RegexOption首先我们看看这几个类的类图关系,如何你有正则表达式基础,从这些方法和属性中就大概能明白使用方法了。

clip_image002

Regex:与正则表达式相关的操作必须通过它来执行的,它还提供了Match,IsMatch,Replace,Split几个静态的方法。

ResgexOptions:初始化Regex实例的时候,可以指定匹配的选项,如忽略大小写,多行模式等。

Match:一个匹配结果,其中还包含分组Group的一个集合。其中Index为0的分组是默认分组,不管正则表达式中有没有分组,这个Group都是存在的。所以在处理自定义的分组时,要跳过这个分组。

Group:一个分组,包含多个Capture。

Capture:一个捕获。

这3个类有继承关系,可以看上面的例子,所以一些属性如Value在3个类中都是存在的。

2, 简单使用

     // 检查是否是数字            if (Regex.IsMatch("956", "[0-9]+"))            {                System.Diagnostics.Debug.WriteLine("数字匹配成功");// 结果:数字匹配成功            }            // 检查是否是字母(忽略大小写)            if (Regex.IsMatch("abcABC", "[a-z]+", RegexOptions.IgnoreCase))            {                System.Diagnostics.Debug.WriteLine("字符匹配成功");// 结果:字符匹配成功            }            // 替换‘abc’(忽略大小写)为‘@’            string res = Regex.Replace("i abc like ABC it", "abc", "@", RegexOptions.IgnoreCase);            // 结果:i @ like @ it            // 以‘abc’(忽略大小写)拆分字符串            string[] splits = Regex.Split("i abc like ABC it", "abc", RegexOptions.IgnoreCase);            // 结果为3个字符串,i,like,it// 根据匹配结果,打印出Match,Group,Capture的值                Regex regex = new Regex(this.txtPattern.Text);                var matches = regex.Matches(this.txtInput.Text);                string result = string.Empty;                int count = matches.Count;                result += "matches.Count:" + count + Environment.NewLine;                foreach (Match m in matches)                {                    result += "matche value:" + m.Value + Environment.NewLine;                    result += "matche group count:" + m.Groups.Count + Environment.NewLine;                    for (int i = 0; i < m.Groups.Count; i++)                    {                        Group g = m.Groups[i];                        result += "--group " + (i + 1) + Environment.NewLine;                        result += "--group Value " + g.Value + Environment.NewLine;                        result += "--capture count:" + m.Captures.Count + Environment.NewLine;                        for (int j = 0; j < g.Captures.Count; j++)                        {                            Capture c = g.Captures[j];                            result += "----capture " + (j + 1) + Environment.NewLine;                            result += "----capture Value " + c.Value + Environment.NewLine;                        }                    }                }

基本的操作就这些了,一般应用中根据需要对捕获的结果进行具体分析。

关于正则表达式的语法可以参考这几篇文章:

正则表达式基础:http://www.cnblogs.com/xiashengwang/p/3988009.html

正则表达式分组:http://www.cnblogs.com/xiashengwang/p/3988573.html

正则表达式的使用(C#)