• 常用正则表达式 捕获组(分组)


    1.img标签

    //<img开头,中间不包含<或>,空格后src以'或"开始.....

    Regex reg = new Regex("<img[^<>]*\ssrc=(['"]+[^<>'"]+['"]+)[^<>]*>", RegexOptions.IgnoreCase);
    MatchCollection mc = reg.Matches(html);

    foreach (Match m in mc)
    {
    var src= m.Groups[1].Value;

    }

    2.textarea标签内容

    string text = "<textarea id='ta1' .*>111</textarea>";// this.txt_RplayContenet.Text;

    Regex reg = new Regex("<textarea id='(.+)' .*>(.*)</textarea>", RegexOptions.IgnoreCase);
    var match=reg.Match(text); //只返回第一个匹配的
    if (match.Success)
    {
    var id = match.Groups[1].Value; //ta  //括号分组,默认正则匹配到的字符串是group[0],第一个括号group[1],第二个括号group[2]
    var content = match.Groups[2].Value; //111
    }

    3.命名捕获组编号规则

    (https://www.cnblogs.com/pmars/archive/2011/12/30/2307507.html)

    命名捕获组通过显式命名,可以通过组名方便的访问到指定的组,而不需要去一个个的数编号,同时避免了在正则表达式扩展过程中,捕获组的增加或减少对引用结果导致的不可控。

    不过容易忽略的是,命名捕获组也参与了编号的,在只有命名捕获组的情况下,捕获组的编号也是按照“(”出现的顺序,从左到右,从1开始进行编号的。第0个返回匹配到的整个字符串.

    正则表达式:(?<year>d{4})-(?<date>d{2}-(?<day>dd))

    用以上正则表达式匹配字符串:2008-12-31

    匹配结果为:

    编号

    命名

    捕获组

    匹配内容

    0

     

    (?<year>d{4})-(?<date>d{2}-(?<day>dd))

    2008-12-31

    1

    year

    (?<year>d{4})

    2008

    2

    date

    (?<date>d{2}-(?<day>dd))

    12-31

    3

    day

    (?<day>dd)

    31

     

    D6B2C47B-427D-4BA0-8A89-FD01FB6D2611 From:http://www.cnblogs.com/xuejianxiyang/p/8256844.html

  • 相关阅读:
    阿里规范
    阿里规范
    阿里规范
    sql 优化步骤
    事务的并发问题:脏读、幻读和不可重复读
    Hive 常见面试题(二)
    yield 的使用
    Java 线程状态
    Lambda 表达式推演全过程
    IDEA 代码自动补全/自动联想 功能
  • 原文地址:https://www.cnblogs.com/xuejianxiyang/p/8256844.html
Copyright © 2020-2023  润新知