Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Notepad++Regex查找具有条件的行组_Regex_String_Notepad++ - Fatal编程技术网

Notepad++Regex查找具有条件的行组

Notepad++Regex查找具有条件的行组,regex,string,notepad++,Regex,String,Notepad++,给出此示例文本: <abr:rules> <abr:ruleTypeDefinition> <abr:code>ABB</abr:code> <abr:ownership> <abr:owner organization="NT" application="DCS" subapplication="FM"/> ...lines... ........... </abr:rules> <abr:rules&g

给出此示例文本:

<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)
这是可行的,但只是因为我知道其他子应用程序的名称


是否有办法仅使用正则表达式执行此操作?

尝试以下查找并替换:

查找:


注意:只有在Notepad++中启用点匹配换行符时,上述模式才有效。如果您不想这样做,那么可以使用[\S\S]而不是点。

您不应该使用regex for xml,您可以在此处阅读原因:


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

我喜欢您的解决方案,但它也匹配“CM”组。我将张贴一个更大的样品testing@farbiondriven我用一个回火点修正了它,它不能跳转到下一个组的结束标记。对不起,伙计,它仍然得到带有CM的组。@farbiondriven我现在到处都用回火点。宾果!!工作得很有魅力!我只需要在末尾加一个\n,以避免留下空行。确实,对于这种特定情况,xml解析器会更简单。接受的答案可以应用于任何文本。我不会对你的答案投赞成票或反对票,因为你是对的,但是:1它应该作为评论发布,因为它不是真正的答案,更多的是建议,2即使链接的问题有很多赞成票,接受的答案更多的是笑话而不是有用的答案,3 XPath不是解析器,这是一种查询语言,为什么不使用Python和XPath查询,而不是为您的任务设计的编辑器呢?
<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)