繁体   English   中英

正则表达式在记事本中查找和修复不匹配的xml关闭标记

[英]Regex to find and fix unmatched xml closing tags in notepad++

我正在尝试简化纠正如下所示的xml文件中缺少的不匹配verse标签的过程:

    <verse number="21">words words words asdlkjf alsdf. </verse>
    <verse number="22">words words words arbitrary words. 
      <verse number="23">more arbitrary text.</verse>
      <verse number="23">other arbitrary words. </chapter>

我想在notepad ++中使用正则表达式来查找以任意数量的空格和<verse但不以</verse>结尾的行的结尾

在行尾匹配的情况下,我应该能够使用notepad ++查找/替换来添加丢失的标签。

这是我到目前为止的内容,它匹配以空格和<verse开始的每行(不幸的是,整行)

^( +<verse).*

不可能匹配行尾,但是您可以匹配整行并将其与缺少的end标签放回去:

Find: ^ *<verse>(.(?!</verse>))*(</\w*>)?$
Repl: $0</verse>$1

这可能是您要寻找的:

查找: (^\\h+<verse(?!.*verse>\\h*).*?)((</.*?>\\h*)*)$
替换: $1</verse>$2

给定样本数据,它将进行两次替换,结果是:

    <verse number="21">words words words asdlkjf alsdf. </verse>
    <verse number="22">words words words arbitrary words. </verse>
      <verse number="23">more arbitrary text.</verse>
      <verse number="23">other arbitrary words. </verse></chapter>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM