常用正则表达式 捕获组(分组)
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.
本文版权归原作者和博客园共有,欢迎转载,但未经原作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步