• 正则表达式的使用(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

  • 相关阅读:
    各种骚操作线段树
    CCPC qinhuangdao
    ACM ICPC 2017 Warmup Contest 3
    ACM ICPC 2017 Warmup Contest 2[菜鸡选手的成长]
    树状数组总结篇
    XDOJ 1152: 数据库查询
    POJ 1511Invitation Cards
    React非受控组件
    React 组件优化之函数防抖节流---使用 debounce +throttle 函数
    React脚手架工程化项目里ServiceWorker.js文件作用
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/3988881.html
Copyright © 2020-2023  润新知