我正在尝试简化纠正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 ++ find / replace来重新添加缺少的标记。
这是我到目前为止所做的,它匹配以空格开头的每一行(不幸的是整行)<verse
^( +<verse).*
答案 0 :(得分:1)
无法匹配行尾,但您可以匹配整行,并将其与缺少的结束标记一起放回:
Find: ^ *<verse>(.(?!</verse>))*(</\w*>)?$
Repl: $0</verse>$1
答案 1 :(得分: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>