假设我们有一些像这样的HTML:
<html>
<body>
<h2>Match group</h2>
<ul>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
</ul>
<h2>Match group 2</h2>
<ul>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
</ul>
<h2>Match group n</h2>
<ul>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
</ul>
<h2>NOMATCH</h2>
<ul>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
</ul>
</body>
</html>
我们如何提取h2标签包含单词 match 的所有h2和ul标签组?基本上我需要为这组元素添加一个容器div:
<div id="container">
<h2>Match group 1></h2><ul>...</ul>
<h2>Match group 1></h2><ul>...</ul>
<h2>Match group N></h2><ul>...</ul>
</div>
<h2>NOMATCH</h2>
<ul>...</ul>
H2和ul标签可能包含任意数量的html属性。
这是我到目前为止所得到的: https://regex101.com/r/mR2fT7/1
任何人都知道如何做到这一点?
答案 0 :(得分:1)
正如其他人所说,你需要一个DOM解析器来实现这一点。 DOM解析器是这项工作的正确工具。但只是为了回答您的问题,如果输入字符串结构始终保持不变,您可以通过以下方式提取所需的import cmath
#Your Variables
a = 5
b = 5
c = 5
#The Discriminant
d = (b**2) - (4*a*c)
#The Solutions
solution1 = (-b-cmath.sqrt(d))/(2*a)
solution2 = (-b+cmath.sqrt(d))/(2*a)
print (solution1)
print (solution2)
组:
h2 + ul
答案 1 :(得分:0)
使用DOM
解析器:
$dom = new DOMDocument();
$dom->loadHTML($data);
$xpath = new DOMXPath($dom);
$headlines = $xpath->query("//h2[contains(., 'Match')]");
print_r($headlines);