删除条件的多个实例

时间:2015-06-01 19:47:43

标签: regex

正如我在帖子中所说,我只是一个正则表达式padawan。

全部从这个帖子开始: Stackoverflow : remove br from inside pre tag

  

问题是在<br />

中找到<pre></pre>个标签

我制作了这种模式:.*?<pre>.*\s?((<br\s*?\/?>\s?).*?){1,}<\/pre>

我回答了这个问题。

自从子问题出现以来,一切都很好:

SUB-Question:如何在<br />代码中找到任何<pre>

我将其翻译成:如何查找具有条件的单词的倍数实例

我的正则表达式的解释:

  • .*? - 非贪婪量词:任意数量的任何字符
  • <pre> - 后跟标记
  • .*\s? - 任意数量的char +可能的空白字符
  • (<br\s*?\/?>\s?) - 跟随我们搜索的标签+可能的空白字符
  • 因此 ((<br \/>\s?).*?){1,}应该(匹配<br /> +可能的空白字符+任意数量的任何字符数)1或无限次。 我还尝试用*替换{1,} (因为{1,}似乎是贪婪的) - 同样的结果。

没有其他想法来实现这个部分&amp;它不起作用。

Regex101:MY attempt

更多的是提高我的知识而不是结果。 希望你能理解我正在做的事情。

最好的考虑,

FALT

P.S。 :我知道(<br\s*?\/?>)使用选项gm查找字符串中<br /> tags的所有出现。

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

<br\s*\/>(?=(?:(?!<\/?pre>)[\s\S])*<\/pre>)

请参阅DEMO and Explanation

逻辑:匹配br之后跟有</pre>的所有<pre>标签,其间没有</pre>或{{1}}。