【问题标题】:Regex replace text between tags正则表达式替换标签之间的文本
【发布时间】:2013-03-15 09:15:10
【问题描述】:

如何匹配这些标签之间的文字?

<!-- |IFNOT:ARCHIVE_PAGE| -->
some text
<!-- |END:IF| -->

谢谢!

【问题讨论】:

标签: regex tags


【解决方案1】:

这不是很推荐,但是

<!-- \|IFNOT:ARCHIVE_PAGE\| -->((\s|.)*?)<!-- \|END:IF\| -->

【讨论】:

    【解决方案2】:
    preg_replace("/<body>([\s\S]*.*)<\/body>/",$replace,$origional);
    

    这将替换正文标签之间的全部内容。

    【讨论】:

      【解决方案3】:

      试试这个正则表达式:

      (?<=<!-- \|IFNOT:ARCHIVE_PAGE\| -->)(\s|.)*?(?=<!-- \|END:IF\| -->)
      

      【讨论】:

      • 对不起,我需要全部匹配所有块。 { 一些文本 } 用标签匹配此文本的所有文本
      • 好吧,这不是一个好主意。查看上面的链接,编辑我的正则表达式以匹配所需
      【解决方案4】:

      使用 Perl,这里唯一的特殊字符是管道“|”。因此,以下正则表达式将匹配(并由于捕获括号 (.+) 而返回)您正在查找的文本:

      {<!-- \|IFNOT:ARCHIVE_PAGE\| -->\s*(.+)\s*<!-- \|END:IF\| -->}s
      

      注意's'修饰符让正则表达式匹配多行,捕获括号前后的\s*表示返回的匹配中不包含空格(包括换行符)。

      【讨论】:

        最近更新 更多