正则表达式-提取子字符串以特定模式开始和结束(HTML解析)?

时间:2019-06-24 09:18:52

标签: html regex

我正在解析一些组织良好的字符串(HTML格式)以提取数据。格式就像(为方便起见添加了换行符):

<span><h2>Category 1</h2>
<p><strong><u>Entry 1</u></strong></p>
<ul><li>Some Data</li></ul>
<h2>Category 2</h2>
<p><strong><u>Entry 2</span>
<ul><li>Some Data</li></ul>
</span>

我打算查找<h2>之间的所有字符串,并先提取</h2>之后的字符串。搜索模式为/<h2>Tier.*?<\/h2>(.*?)(<h2>|<\/span>)/g。但是每个匹配的子字符串都以<h2>结尾。因此,不会提取下一个类别,而第三个类别块就可以了,因为存在新的搜索。

然后,我尝试贪婪地搜索不包含<g2>的子字符串。模式为h2>Category.*?<\/h2>(^(h2).)*。但是它不起作用。

2 个答案:

答案 0 :(得分:1)

尝试通过此正则表达式提取内容:

<h2>\K[^<]+

Here Is Demo

祝你好运!

答案 1 :(得分:0)

您的问题不清楚,这让我很困惑。

但是我想你想要这个:

<h2>[^<]+<\/h2>(.+?<\/ul>)

演示:https://regex101.com/r/k16AoN/2

除此之外,您应该参考以下内容:What is the difference between HTML tags <div> and <span>?。也许您使用了错误的<span>标记