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);
    
  • 相关阅读:
    python爬虫实战(1)--爬取糗事百科
    python爬虫(5)--正则表达式
    python爬虫(4)--Cookie的使用
    python爬虫(3)--异常处理
    python爬虫(2)--Urllib库的高级用法
    EQ2008 LED控制卡二次开发
    C# 遍历对象属性取值赋值
    BootStrap Table
    MongoDB 操作
    SQL Server 2008(R2) 数据库使用外网IP实例连接服务器
  • 原文地址:https://www.cnblogs.com/yinchh/p/11661693.html
Copyright © 2011-2022 走看看