如何在正则表达式中捕获包含换行符的字符串?

时间:2015-09-23 03:34:35

标签: php html regex string text

我正在尝试捕获

中的字符串Some Text 1Some Text 2Some Text 3Some Text 4
<div class="main" style="background:red;">
Some Text 1
<div style="color:blue;">Hello 1</div>
Some Text 2
<span style="color:blue;">Hello 2</span>
Some Text 3
<pre style="color:blue;">Hello 3</pre>
Some Text 4
</div>

使用/(^[^><].*?[^><]$)/mg工作正常,除非我在main标记内的标记之间添加新行时,标记及其内容也会被捕获。此外,当我在main中的标记内添加换行符时,在hello [num]之前和hello[num]之后,也会捕获hello [num]

以下是第一个案例https://regex101.com/r/oT9aA5/2,这是第二个案例https://regex101.com/r/oT9aA5/3这也是两个案例的组合https://regex101.com/r/oT9aA5/4

是否可以将其修复为仅捕获Some Text 1Some Text 2Some Text 3Some Text 4。基本上,我试图捕获包含其他标记的标记内的任何字符串。

1 个答案:

答案 0 :(得分:-1)

好的,这是符合您的测试用例的正则表达式:

>([\w\s]*)<[^\/]

https://regex101.com/r/oT9aA5/8

您的最后一个元素与Hello 1没有任何背景差异。要捕获最后一个字符串,您应该使用新的正则表达式并合并结果。目前还不清楚你的剩余字符串的上下文是什么。如果它是最后一个字符串,那么您可以通过

捕获它
 ([\w\s]*)<\/div>$