我在一个HTML块中有一系列段落。大多数文本都带有一些超链接标记。有时,段落后面跟着只包含图像的段落。所以:
<p1>...text..<a>...</a>...text...</p>
<p2>...text..<a>...</a>...text...</p>
<p3><img></p>
<p4>...text..<a>...</a>...text...</p>
我正在尝试在NotePad ++中找到一个用于查找/替换的正则表达式,该正则表达式将匹配一个段落,后面跟一个包含图像的段落(我想将它们包装在一个标记中)。
这似乎正确匹配单个段落而不再是:
<p(?!.*<p)?(.*?)</p>
但是当我尝试添加与下面的图像段落匹配的任何内容时,正则表达式开始向后匹配以包含图像段落之前的每个段落(即,从p1到p3,而不是从p2到p3)。
解决方案需要包含匹配换行符的点字符(无论如何。在段落文本中有回车符。)
答案 0 :(得分:0)
要匹配包含img
标记的段落之前的段落,您可以使用
<p((?!</p>).)*</p>(?=\s*<p(.(?!</p>))*<img.*?</p>)
应检查Regular expression
和. matches newline
选项。
请注意,如果存在嵌套的<p>
标记,则可能无效,并且它假定段落之间只有空格(可能包含换行符)。
如果您希望带有img
标记的段落包含在选择使用
<p((?!</p>).)*</p>\s*<p(.(?!</p>))*<img.*?</p>