zoukankan      html  css  js  c++  java
  • 正则表达式应用

    替换时引用匹配到的值 $1表示第1个小括号的内容,$2表示第2个小括号的内容

    Regex.Replace(str, @"((([a-z]|[A-Z])+))", " $1 ")

    根据分组下标取值(match.Groups[0]是整个正则匹配到的值,之后按照分组左括号顺序)

                var matchs1 = Regex.Matches(text, @"((S+)://(S+))");
                foreach (Match match in matchs1)
                {
                    Console.WriteLine(string.Format("网址:{0} 网址:{1} 协议:{2} 域名:{3}", match.Value, match.Groups[1], match.Groups[2], match.Groups[3]));
                    //match.Groups[0]和match.Value的结果一样
                    Console.WriteLine(string.Format("网址:{0} 网址:{1} 协议:{2} 域名:{3}", match.Groups[0], match.Groups[1], match.Groups[2], match.Groups[3]));
                }
    

    根据分组名取值

                var matchs2 = Regex.Matches(text, @"(?<protocol>S+)://(?<address>S+)");
                foreach (Match match in matchs2)
                {
                    Console.WriteLine(string.Format("网址:{0} 协议:{1} 域名:{2}", match.Value, match.Groups["protocol"], match.Groups["address"]));
                }
    

    测试:获取超链接中的链接和文本

                string s = "111<a href="http://www.baidu.com">百度</a>222";
                var match = Regex.Match(s, "<a[^>]+href="(?<href>[^"]*)">(?<text>[\s\S]*)</a>");
                Console.WriteLine(match.Groups[0].Value);
                Console.WriteLine(match.Groups[1].Value);
                Console.WriteLine(match.Groups[2].Value);
                Console.WriteLine();
                Console.WriteLine(match.Value);
                Console.WriteLine(match.Groups["href"].Value);
                Console.WriteLine(match.Groups["text"].Value);
    
  • 相关阅读:
    子类构造函数是否会默认调用父类的无参构造函数
    使用多线程
    进程和多线程的概念及线程的优点
    Java API文档
    InputStream
    【颗粒归仓】--Zookeeper基本概念
    【颗粒归仓】--Struts2
    【颗粒归仓】--spring IoC容器
    【颗粒归仓】--Java泛型
    【多线程】--线程同步
  • 原文地址:https://www.cnblogs.com/yinchh/p/11661693.html
Copyright © 2011-2022 走看看