如何使用 Notepad++ 查找和替换 <wp:postmeta> </wp:postmeta> 标签之间的文本
Posted
技术标签:
【中文标题】如何使用 Notepad++ 查找和替换 <wp:postmeta> </wp:postmeta> 标签之间的文本【英文标题】:How to fin and replace text between <wp:postmeta> </wp:postmeta> tags using Notepad++ 【发布时间】:2016-03-31 06:37:31 【问题描述】:我正在使用 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>
我特别希望在其相应的打开和关闭item
标记中查找并替换从第一个<wp:postmeta>
标记到最后一个关闭</wp:postmeta>
末尾的所有内容。有数百个,我不想一个一个去。请让我知道这是否可能。如果不可能,我想知道如何从一个 <wp:postmeta>
转到它的关闭 </wp:postmeta>
,我可以使用它。
提前致谢。
【问题讨论】:
找不到一种方法来做你想做的事,但<wp:postmeta>(.*?)</wp:postmeta>
对每个标签都有效!不要忘记检查选项“。匹配换行符”
不需要分组括号。我喜欢用它。
【参考方案1】:
在 Notepad++ 中,要强制 .
匹配换行符(多行文本块),您需要在查找和替换对话框中启用 . matches newline
选项。
请注意,使用正则表达式更改 (X)html 代码非常困难且容易出错。
所以,如果您知道自己在做什么,您可以启用我上面提到的那个选项并使用正则表达式 <wp:postmeta>.*?</wp:postmeta>
并替换为您需要的任何内容。见regex demo。
如果有大文本块没有关闭</wp:postmeta>
,您可能会遇到超时问题。然后,您需要展开正则表达式:
<wp:postmeta>[^<]*(?:<(?!/wp:postmeta>)[^<]*)*</wp:postmeta>
查看正则表达式演示。无论. matches newline
选项如何,此正则表达式都将匹配换行符。
如果需要匹配相邻的 wp:postmeta 标签,可以在模式周围使用非捕获组,并为其设置 +
量词:
(?:\s*<wp:postmeta>[^<]*(?:<(?!/wp:postmeta>)[^<]*)*</wp:postmeta>)+
见one more demo
截图:
【讨论】:
感谢您的回复,但我没有像以前看到的那样看到匹配的新行。这是一个在查找中直接复制粘贴的屏幕截图。它仍然显示它无法找到任何东西。 i.imgur.com/FXeQ1Ne.jpg 请看我的截图。使用展开的模式,您不需要任何.
匹配换行符 选项。您可能还想更新您的 Notepad++ 版本。
太棒了,谢谢.. 我卸载了我拥有的版本并安装了最新版本,现在它运行良好。干杯!!以上是关于如何使用 Notepad++ 查找和替换 <wp:postmeta> </wp:postmeta> 标签之间的文本的主要内容,如果未能解决你的问题,请参考以下文章