我正在尝试捕获
中的字符串Some Text 1
,Some Text 2
,Some Text 3
和Some 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 1
,Some Text 2
,Some Text 3
和Some Text 4
。基本上,我试图捕获包含其他标记的标记内的任何字符串。
答案 0 :(得分:-1)
好的,这是符合您的测试用例的正则表达式:
>([\w\s]*)<[^\/]
https://regex101.com/r/oT9aA5/8
您的最后一个元素与Hello 1
没有任何背景差异。要捕获最后一个字符串,您应该使用新的正则表达式并合并结果。目前还不清楚你的剩余字符串的上下文是什么。如果它是最后一个字符串,那么您可以通过
([\w\s]*)<\/div>$