我正在使用
XML导出来删除旧的通缉数据并将其替换为相关标签.我一直在环顾四周,但一直无法找到我正在寻找的东西,所以请原谅我,如果这看起来多余的话.
我希望替换我的< wp:postMeta>中的所有数据和< / wp:postMeta>标签.但是因为它们跨越多行.*?不像过去那样工作.我相信这意味着它只能跨越一条线.以下是代码示例:
<item> //Start of find <wp:postMeta> <wp:Meta_key><![CDATA[_edit_last]]></wp:Meta_key> <wp:Meta_value><![CDATA[3]]></wp:Meta_value> </wp:postMeta> <wp:postMeta> <wp:Meta_key><![CDATA[_thumbnail_id]]></wp:Meta_key> <wp:Meta_value><![CDATA[51833]]></wp:Meta_value> </wp:postMeta> <wp:postMeta> <wp:Meta_key><![CDATA[snapEdIT]]></wp:Meta_key> <wp:Meta_value><![CDATA[1]]></wp:Meta_value> </wp:postMeta> // End of find using Notepad++ </item> <item> //Start of find <wp:postMeta> <wp:Meta_key><![CDATA[_edit_last]]></wp:Meta_key> <wp:Meta_value><![CDATA[3]]></wp:Meta_value> </wp:postMeta> <wp:postMeta> <wp:Meta_key><![CDATA[_thumbnail_id]]></wp:Meta_key> <wp:Meta_value><![CDATA[51425]]></wp:Meta_value> </wp:postMeta> // End of find using Notepad++ </item>
我特意想找到并替换第一个< wp:postMeta>中的所有内容.标记到最后一次结束< / wp:postMeta>在其相应的打开和关闭项目标签内.有数以百计这些,我宁愿不逐一去.如果可能,请告诉我.如果不可能,我想知道如何从一个< wp:postMeta>到它的结束< / wp:postMeta>我可以用它.
提前致谢.
解决方法
在记事本中,强制一个.要匹配换行符(多行文本块),您需要启用.匹配“查找和替换”对话框中的换行选项.
请注意,使用正则表达式更改(X)HTML代码非常困难并且容易出错.
所以,如果你知道你在做什么,你可以启用我上面提到的那个选项并使用正则表达式< wp:postMeta>.*?< / wp:postMeta>并用你需要的任何东西替换.见regex demo.
如果存在没有结束< / wp:postMeta>的大文本块,则可能会遇到超时问题.然后,您将需要展开正则表达式:
<wp:postMeta>[^<]*(?:<(?!/wp:postMeta>)[^<]*)*</wp:postMeta>
请参阅正则表达式演示.这个正则表达式将匹配换行符,无论如何.匹配换行选项.
如果需要匹配相邻的wp:postMeta标记,可以在模式周围使用非捕获组并为其设置量词:
(?:\s*<wp:postMeta>[^<]*(?:<(?!/wp:postMeta>)[^<]*)*</wp:postMeta>)+
截图: