正则表达式 – 如何使用记事本在标签之间查找和替换文本

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何使用记事本在标签之间查找和替换文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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>)+

one more demo

截图:

enter image description here

猜你在找的正则表达式相关文章