正则表达式以匹配HTML代码中的模式

费哈特

我从网络浏览器获取以下代码。

我的源代码:(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;
}

谢谢!

阿德里安·HHH

该示例代码比您的正则表达式处理的空白要多得多。您可以\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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章