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);
    
  • 相关阅读:
    8u ftp 可以连接但是无法获取目录的解决办法:无法打开传输通道。原因:由于...
    自学Oracle心得
    Java程序员到架构师的推荐阅读书籍
    (转)Java中Image的水平翻转、缩放与自由旋转操作
    IOC和DI
    Spring简介
    正则表达式
    反射
    网络编程
    GUI( 图形用户界面)
  • 原文地址:https://www.cnblogs.com/yinchh/p/11661693.html
Copyright © 2011-2022 走看看