簡體   English   中英

Notepad ++正則表達式查找有條件的線組

[英]Notepad++ Regex to find group of lines with condition

給出以下示例文本:

<abr:rules>
<abr:ruleTypeDefinition>
<abr:code>ABB</abr:code>
<abr:ownership>
<abr:owner organization="NT" application="DCS" subapplication="FM"/>
...lines...
...........
</abr:rules>
<abr:rules>
<abr:ruleTypeDefinition>
<abr:code>ADE</abr:code>
<abr:ownership>
<abr:owner organization="NT" application="DCS" subapplication="CM"/>
...lines...
...........
</abr:rules> (end of group)

我想查找並刪除從<abr:rules></abr:rules> ,條件subapplication IS NOT "CM" 組織和應用程序相同, <abr:code>是任何字符串。

我到目前為止嘗試的是

<abr:rules>\n<abr:ruleTypeDefinition>\n<abr:code>[a-zA-Z0-9]{3,}<\/abr:code>\n<abr:ownership>\n<.*"(FM|PSD|SSC)"\/>\n(?s).*?\n<\/abr:rules>\n

這有效,但僅因為我知道其他子應用程序名稱。

有什么辦法只能使用正則表達式嗎?

嘗試以下查找並替換:

找:

<abr:rules>((?!subapplication=).)*subapplication="(?!CM")[^"]+"((?!</abr:rules>).)*</abr:rules>

更換:

(empty string)

演示

注意:只有在Notepad ++中啟用點以匹配換行符時,以上模式才有效。 如果您不想這樣做,則可以使用[\\S\\s]代替點。

您不應該將正則表達式用於xml,您可以在此處閱讀原因: https//stackoverflow.com/a/1732454/3763374

相反,您可以使用一些解析器,例如Xpath

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM