【问题标题】:RegEx for excluding a specifying group of tag within set of tagsRegEx 用于在一组标签中排除指定的一组标签
【发布时间】:2018-04-21 21:13:39
【问题描述】:
<info>
<owner>
<p>Owners:</p>
<p>1. New Owner_1</p>
<p>2. New Owner_2</p>
</owner>
<addons>
<p>Name of dog: Alex</p>
<p>1. Text blah blah blah</p>
<p>2. Text blah blah blah</p>
<p>3. Text blah blah blah</p>
<p>4. Text blah blah blah</p>
<p>OR MORE Text blah blah blah</p>
</addons>
<p>DETAILS</p>
<p>1. Vicky Mears 1st dog's owner.</p>
<p>2. Paul Nash 2nd dog's owner.</p>
<p>3. Dog found last Apr. 2016</p>
</info>

您好,我目前正在为学校学习正则表达式。我的老师指出了上述结构的一个问题。

他问我们怎么找:

<p>1. ...</p>
<p>2. ...</p>
<p>3. ...</p>

但不在里面:

<p>DETAILS</p>
<p>1. Vicky Mears 1st dog's owner.</p>
<p>2. Paul Nash 2nd dog's owner.</p>
<p>3. Dog found last Apr. 2016</p>
</info>

&lt;owner&gt;&lt;/owner&gt;, &lt;addons&gt;&lt;/addons&gt; 标记在某些时候会有所不同,因此无需指定母标记,只需排除在以下位置找到的所有内容:

<p>DETAILS</p>
<p>1. Vicky Mears 1st dog's owner.</p>
<p>2. Paul Nash 2nd dog's owner.</p>
<p>3. Dog found last Apr. 2016</p>
</info>

我用这个

(?s)<p>DETAILS</p>(.*?)</info> 

但它找到了我要排除的那个。

谁能帮我解决这个问题? stackoverflow 是我最后的选择。

PS:在 Notepad++ v6.8.3 中仅使用 RegEx 进行搜索

【问题讨论】:

  • @omijn 我大约一周前看到了这篇文章,但据我所知对其进行了评估,发现这不是我一直在寻找的……但是,谢谢感谢您的回复。
  • 到目前为止你尝试了什么?
  • @Ibrahim 我使用这个(?s)&lt;p&gt;DETAILS&lt;/p&gt;(.*?)&lt;/info&gt;,但它找到了我想要排除的那个。顺便说一下,我是 RegEx 的新手。
  • 请使用“编辑”将任何相关信息添加到问题中

标签: regex html-parsing regex-lookarounds regex-greedy regex-group


【解决方案1】:

我会这样做

<p>DETAILS[\s\S]*|(<p>.*?<\/p>)|.*

演示:https://regex101.com/r/IB9QFu/1/

这个想法是使用布尔值OR |首先匹配DETAILS之后发生的任何事情,然后开始匹配&lt;p&gt;..&lt;/p&gt;

您可以在 - notepad++ - Replace All$1 中仅保留所需的 &lt;p&gt;..&lt;/p&gt;

如果您想在RegExr 中测试它,请使用此代码

/<p>DETAILS[\s\S]*|(<p>.*?<\/p>)|^.*$/gm

【讨论】:

  • 这是我一直在寻找的答案...谢谢@Ibrahim 有数千行要检查,我在&lt;p&gt;DETAILS&lt;/p&gt; 和YES 下一一检查很麻烦!非常感谢!
  • @Ibrahim 先生,您好,我有一个后续问题,您的代码可以正常工作,但是,如果我有一个带有两个 &lt;p&gt;DETAILS&lt;/p&gt; 的结构,它将排除所有内容您是否有代码只停在&lt;p&gt;DETAILS&lt;/p&gt;....&lt;/info&gt;?要问的太多了,但我希望你能再次帮助我。
  • 嗨@Lucas,在这种情况下,您可以指定一个长度,例如120,并在其后添加&lt;/info&gt;。这将使第一个无法到达&lt;/info&gt;,而第二个可能。在这里查看:regex101.com/r/IB9QFu/2
  • @Ibrahim 我从没想过指定最大数量。哥们你真棒!谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-11-01
  • 2011-04-16
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
相关资源
最近更新 更多