<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>
<owner></owner>, <addons></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>
我用这个
(?s)<p>DETAILS</p>(.*?)</info>
但它找到了我要排除的那个。
任何人都可以帮我解决这个问题吗? stackoverflow是我的最后一招。
PS:仅在Notepad ++ v6.8.3中使用RegEx进行搜索
答案 0 :(得分:0)
我会这样做
<p>DETAILS[\s\S]*|(<p>.*?<\/p>)|.*
演示:https://regex101.com/r/IB9QFu/1/
我们的想法是使用布尔值OR |
来匹配DETAILS
之后发生的任何事情,然后开始匹配<p>..</p>
。
你可以 - 记事本++ - Replace All
$1
只保留所需的<p>..</p>
。
如果您想在RegExr
中进行测试,请使用此代码
/<p>DETAILS[\s\S]*|(<p>.*?<\/p>)|^.*$/gm