我从网络浏览器获取以下代码。
我的源代码:(HTML)
<dl class="field-dl output-field-dl" >
<dt class="field-dt output-field-dt">
<label><span>Product Code:</span></label>
</dt>
<dd class="field-dd output-field-dd ">
0234567
</dd>
</dl>
<dl class="field-dl output-field-dl" >
<dt class="field-dt output-field-dt">
<label><span>Per no:</span></label>
</dt>
<dd class="field-dd output-field-dd ">
123456
</dd>
</dl>
如何提取我的产品代码?
我当前的代码在这里:
var rx = new Regex("<span>Product Code:</span></label></dt><dd class=\"field-dd output-field-dd \">(.*?)</dd>\\s");
var m = rx.Matches(kaynak);
foreach (Match match in m)
{
string key = match.Groups[1].Value;
}
谢谢!
该示例代码比您的正则表达式处理的空白要多得多。您可以\s*
在每一个之前<
和之后添加>
,但只能在它们之间添加一个。就像是:
new Regex("<span>\\s*Product Code:\\s*</span>\\s*</label>\\s*</dt>\\s*<dd class=\"field-dd output-field-dd \">(.*?)</dd>\\s");
捕获组(.*?)
可能太慷慨了。我建议([^<>])
。如果您愿意,.
则.
可能需要将正则表达式设置为接受其中的换行符。因此,请考虑使用:
new Regex(... , RegexOptions.Singleline);
但是,正如其他人所说,使用HTML或XML解析例程可能更好。该答案仅与您问题的正则表达式部分有关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句