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

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))

 

814286-20180111123930238-883152136.png

用以上正则表达式匹配字符串: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

 

 

 

 814286-20180110175418660-1000332877.jpg

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