我正在处理一个巨大的xml文件,并且不想使用XML软件,因为我从PubMed网站导出的xml文件的结构不正确,不时会发生变化,所以我想要删除notepad ++中的某些xml节点或使用regex删除ultraedit。如何删除例如整行?
<ArticleId IdType="pii">S1806-83242018000100950</ArticleId>
答案 0 :(得分:0)
要删除文件中包含ArticleId元素的每一行,您需要此正则表达式:
^.*<ArticleId IdType="pii">.*$
如果结束标记不在同一行,则无效。
答案 1 :(得分:0)
使用 Perl正则表达式搜索字符串:
^[\t ]*<ArticleId IdType="pii">.*</ArticleId>[\t ]*(?:\r?\n|\r|$)
此正则表达式字符串搜索
^
...从行的开头[\t ]*
...用于0个或更多水平制表符或空格(可选的主要制表符/空格)<ArticleId IdType="pii">
...此字符串.*
...除newline个字符</ArticleId>
...此字符串[\t ]*
...用于0个或更多水平制表符或空格(可选的尾随制表符/空格)(?:
... )
...带有一个带有OR表达式的非标记组\r?\n|\r|$
...回车(可选)和换行或只是回车或行/文件的结尾。所以(?:\r?\n|\r|$)
匹配
$
与行结尾字符不匹配。它只是在<ArticleId IdType="pii">.*</ArticleId>
的情况下添加,也可以在文件末尾找到没有行结束,即文件中的最后一行没有行结束。
也可能是搜索字符串:
[\t ]*<ArticleId IdType="pii">.*</ArticleId>[\t ]*(?:\r?\n|\r)?
现在要删除的XML元素也可以在包含另一个标记的行中,因为^
删除了行的开头,并且匹配行结尾只是可选的。所以它不像上面的搜索表达那样限制行。
答案 2 :(得分:-1)
如果您想要使用ArticleId删除所有行,而不考虑其内容或属性,则可以直接搜索:
<ArticleId.+<\/ArticleId>