C#正则表达式从html中选择值
我有下一个html代码:C#正则表达式从html中选择值,c#,html,regex,C#,Html,Regex,我有下一个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>
<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="download" value="water-3326310_1920.jpg" data-perm="check"> 1920×1277</td><td>JPG</td><td>335 kB</td></tr>
<tr class="no_default"><td><input type="radio" name="download" value="water-3326310.jpg" data-perm="auth"> 4256×2832</td><td>JPG</td><td>2.1 MB</td></tr>
</table>
但问题是我们有多个value=”“
,它将从第一个开始,这使得我们无法识别正确的值
顺便说一句,HTML在一行中,因为我这样做了:
string i = Regex.Replace(x, "(?:\r?\n|\r)+", "");
在一行中执行正则表达式更容易。在强制性的不使用正则表达式解析HTML之后,您的模式就接近了
Regex n2 = new Regex(@"value=""(.+_1920\.[^""]+)""");
您可以这样使用它:
var m = n2.Match(src);
if (m.Success)
filename = m.Groups[1].Value;
如果您确实需要使用全分辨率(PS我注意到它是其中的一个特殊字符),您可以使用:
Regex n2 = new Regex(@"value=""([^""]+)""(?=.+?>1920×1277)");
你可以做:
只有在同一行中的值后面有
1920x1277
字符串时,才会匹配值。这就是为什么Regex仍然用于解析HTML;)8月月月日日日,本月月月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方第八章:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务:电子商务
Regex n2 = new Regex(@"value=""([^""]+)""(?=.+?>1920×1277)");