正则表达式:从两个HTML标记之一中检索值。

时间:2013-05-02 16:44:33

标签: html regex

我使用OutWit Hub从网站上抓取公司名称。

在某些页面中,HTML标记如下:

<p style="font-weight: bold;">COMPANY NAME</p>

而在其他页面中:

<span style="font-weight: bold;">COMPANY NAME</span>

所有页面都使用上述两个选项之一,但绝不会同时使用这两个选项。

如果您不熟悉OutWit Hub,它可以通过询问之前的标记和您想要的信息之后的标记来工作。

我试图创建一个可以检索公司名称的正则表达式,无论是在之前还是之后使用这些标记中的哪一个。

到目前为止,我已经尝试了这个&#39;之前&#39;标签,但它不起作用:

/[<p style="font-weight: bold;">]|[<p>Name of Company: <span style="font-weight: bold;">]/

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

丢失方括号([...]),这些用于指定character class or character set,而不是字符序列。

/<p style="font-weight: bold;">|<p>Name of Company: <span style="font-weight: bold;">/

有关理解和调试正则表达式的帮助,请查看Regexpr

但是,正如其他人所评论的那样,正则表达式并不是解析HTML的最可靠方法。例如,您如何知道页面上永远不会有任何其他段落或跨度的样式为font-weight: bold

如果您了解C#,那么HTML Agility Pack是一个用于解析HTML的有用库。但是,对你的需求可能有点过分了。

答案 1 :(得分:0)

你可以使用这个正则表达式&amp;获取第二组数据以获取公司名称:

^(<p style="font-weight: bold;">|<span style="font-weight: bold;">)(.*)(</p>|</span>)