正则表达式匹配一个匹配组中的多行

时间:2019-03-22 12:23:05

标签: php regex

我有以下字符串:

<div>Some headline - list 1<br />
&gt; List item 1<br />
&gt; List item 2<br />
&gt; List item 3<br />
<br />
List 2<br />
&gt; foo<br />
&gt; bar<br />
&gt; baz<br />
<br />
&nbsp;</div>

它包含两个男性形式的列表。我的目标是将这些列表的项目包装到<ul>中。为此,我正在寻找一种正则表达式,将每个列表的所有项目都匹配到一个匹配组中。

所以我的预期结果是:

&gt; List item 1<br />
&gt; List item 2<br />
&gt; List item 3<br />

&gt; foo<br />
&gt; bar<br />
&gt; baz<br />

我厌倦的所有正则表达式魔术都失败了,因为它们只匹配列表的单行,或者匹配组包含了第一个列表的开头和最后一个列表的结尾之间的所有内容。

我尝试过~&gt; (.*)<br />\s~gis匹配两个列表。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此正则表达式,以仅捕获列表。

我正在使用Java正则表达式。

(&gt; .*(?:<br\s/>\s+List\s2<br\s/>)?)

它捕获了这些元素。

&gt; List item 1<br />
&gt; List item 2<br />
&gt; List item 3<br />
&gt; foo<br />
&gt; bar<br />
&gt; baz<br />