需要正则表达式来删除XML文件中的大量标记

时间:2014-02-10 23:43:58

标签: xml regex sublimetext2

以下正则表达式

<recode>([^<\/sumfa]*)/gi

<recode>([^#]*)sumfa>{1}/gi

最终抓住了太多,我只希望它从第一个<recode>抓到下一个</sumfa>,然后允许我删除崇高文本中的每个部分

以下是XML

       <item>
       <imd>
       <fs_ar>T</fs_ar>
       <fs_as>T</fs_as>
       <fs_af>T</fs_af>
       <fs_aic>T</fs_aic>
       <fs_air>T</fs_air>
       <kid>601</kid>
       </imd>
       <title>whatever</title>
       <recode>200</recode>
       <reto>312</reto>
       <doto>312</doto>
       <pathrela>whatever.html</pathrela>
       <realext>.php</realext>
       <kindext>.html</kindext>
       <charset>iso-8859-1</charset>
       <mime>text/html</mime>
       <sizeex>5633</sizeex>
       <sizeco>T</sizeco>
       <impsco>1.602941</impsco>
       <impscosca>1.455153</impscosca>
       <chgscosca>1.455153</chgscosca>
       <lkstae>1</lkstae>
       <lnkta>3</lnkta>
       <sumfa>1</sumfa>
       </item>
       <item>
       <imd>
       <fs_ar>T</fs_ar>
       <fs_as>T</fs_as>
       <fs_af>T</fs_af>
       <fs_aic>T</fs_aic>
       <fs_air>T</fs_air>
       <kid>23</kid>
       </imd>
       <title>Whats UP Dog</title>
       <recode>200</recode>
       <reto>219</reto>
       <doto>219</doto>
       <pathrela>wud.html</pathrela>
       <realext>.html</realext>
       <kindext>.html</kindext>
       <charset>iso-8859-1</charset>
       <mime>text/html</mime>
       <sizeex>6252</sizeex>
       <sizeco>T</sizeco>
       <lastmo>2013-04-18 08:51:58</lastmo>
       <impsco>398.818604</impsco>
       <impscosca>9.11296</impscosca>
       <chgscosca>8.657311</chgscosca>
       <lksta>2</lksta>
       <lkstae>8</lkstae>
       <lnkta>414</lnkta>
       <sumfa>1</sumfa>
       </item>

1 个答案:

答案 0 :(得分:2)

/<recode>([^#]*?)<(sumfa)>([^<]*)<\/\2>/gmsi

较短版本:<recode>([^#]*?)<\/sumfa>/gmi

这个正则表达式的主要原因是因为?量词,这使得匹配变得懒惰。


?量词的在线演示:

  

'?' Quantifier @ Regex101