常用正则表达式 捕获组(分组)
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>\d\d))

用以上正则表达式匹配字符串:2008-12-31
匹配结果为:
| 
 编号  | 
 命名  | 
 捕获组  | 
 匹配内容  | 
| 
 0  | 
 (?<year>\d{4})-(?<date>\d{2}-(?<day>\d\d))  | 
 2008-12-31  | 
|
| 
 1  | 
 year  | 
 (?<year>\d{4})  | 
 2008  | 
| 
 2  | 
 date  | 
 (?<date>\d{2}-(?<day>\d\d))  | 
 12-31  | 
| 
 3  | 
 day  | 
 (?<day>\d\d)  | 
 31 
  | 
 
D6B2C47B-427D-4BA0-8A89-FD01FB6D2611 From:http://www.cnblogs.com/xuejianxiyang/p/8256844.html
作者:xuejianxiyang
出处:http://xuejianxiyang.cnblogs.com
关于作者:Heaven helps those who help themselves.
本文版权归原作者和博客园共有,欢迎转载,但未经原作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

                
            
        
浙公网安备 33010602011771号