如何使用C#正则表达式从指定HTML代码中提取radio的value值?
用C#正则表达式提取radio标签的
value属性值 嘿,要从你提供的这段HTML里提取radio标签的value属性值,用C#的正则表达式其实挺简单的,我给你一步步拆解怎么实现:
第一步:编写适配的正则表达式
针对你的HTML片段,我们可以先写一个精准匹配的正则模式,专门抓type="radio"标签里的value属性:
<input\s+type="radio"\s+name="[^"]+"\s+value="([^"]+)"
给你解释下这个正则的逻辑:
<input\s+:匹配<input开头,后面跟至少一个空白字符,兼容标签内的空格type="radio":精准定位type属性为radio的输入标签\s+name="[^"]+":匹配name属性,[^"]+表示只匹配双引号内的内容,避免跨属性乱匹配\s+value="([^"]+)":匹配value属性,用括号把value的内容捕获出来,这就是我们要提取的核心内容
如果想兼容单引号或者属性不带引号的特殊情况(虽然你的例子里是双引号,但多做兼容更稳妥),可以用更灵活的版本:
<input\s+type=["']?radio["']?\s+name=["']?[^"']+["']?\s+value=["']?([^"'>]+)["']?
第二步:C#代码实现提取
接下来用C#代码落地,记得先引用System.Text.RegularExpressions命名空间,然后写具体逻辑:
using System; using System.Text.RegularExpressions; class RadioValueExtractor { static void Main() { // 你的HTML内容 string html = @"<table> <tr><td><input type=""radio"" name=""download"" value=""https://cdn.pixabay.com/photo/2018/04/17/00/42/water-3326310_640.jpg""> 640×425</td><td>JPG</td><td>48 kB</td></tr> <tr><td><input type=""radio"" name=""download"" value=""water-3326310_1280.jpg"" data-perm=""check""> 1280×851</td><td>JPG</td><td>158 kB</td></tr> <tr><td><input type=""radio"" name=""..."; // 选用精准匹配的正则模式 string pattern = @"<input\s+type=""radio""\s+name=""[^""]+""\s+value=""([^""]+)"""; // 获取所有符合条件的匹配结果 MatchCollection matches = Regex.Matches(html, pattern); // 遍历输出提取到的value值 foreach (Match match in matches) { if (match.Groups.Count > 1) { Console.WriteLine("提取到的value值:" + match.Groups[1].Value); } } } }
运行这段代码后,你会得到如下输出:
提取到的value值:https://cdn.pixabay.com/photo/2018/04/17/00/42/water-3326310_640.jpg 提取到的value值:water-3326310_1280.jpg
小提醒
正则处理这种简单的HTML片段完全够用,但如果是复杂的嵌套HTML文档,更推荐用专门的HTML解析库(比如HtmlAgilityPack),毕竟正则在处理不规则HTML时容易踩坑~
内容的提问来源于stack exchange,提问作者Demir Karic
相关产品推荐
相关产品推荐

