论坛成员, 我正在使用NotePad ++的最新版本,请在RegEx中提供帮助,它将按照我指定的顺序搜索多个标记的单词。以下是我准备的一个例子:
<first> <second> <third>
- 按照我需要RegEx的顺序代表三个标签。
<second> <first> <third>
- 这些标签不符合我需要的顺序,因此我希望RegEx在搜索中忽略它们。
<third> <second> <first> <second> <second>
- 这些标签不是我需要的顺序,也包含重复标签我不需要RegEx包含在搜索中。
我已经尝试过此RegEx:(first | second | third)
然而,它似乎给了我额外的数据,我不想要。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试:
<first>[^<>]*<second>[^<>]*<third>
答案 1 :(得分:0)
你在这里遇到了一个棘手的问题,因为......从根本上说,XML很难用正则表达式解析。有很多东西组成了语义相同(或非常相似)的XML,这将破坏正则表达式。
所以真正的答案是使用xpath&#39;这是一个XML表达式,而不是像目录路径。作为perl中的说明性示例(可在Windows上运行)。
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new( 'pretty_print' => 'indented' )->parse( \*DATA );
foreach my $match ( $twig->root->get_xpath('//first/second/third') ) {
print $match ->text, "\n";
}
$twig->print;
__DATA__
<root>
<first>
<second>
<third>match here</third>
</second>
</first>
<second>
<first>
<third>not a match</third>
</first>
</second>
<first> <second>
<third>another match here</third></second>
</first>
<someparent>
<another>
<first><second><third>deeper nested match</third></second></first>
</another>
</someparent>
</root>
&#39; xpath&#39; //first/second/third
会找到您想要的元素(开头为//
表示&#39;当前&#39;)的所有后代。我认为Notepad ++支持XML插件。