0

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

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

谢谢!

4

4 回答 4

2
preg_replace("/<body>([\s\S]*.*)<\/body>/",$replace,$origional);

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

于 2013-11-18T13:02:18.667 回答
2

这不是很推荐,但是

<!-- \|IFNOT:ARCHIVE_PAGE\| -->((\s|.)*?)<!-- \|END:IF\| -->
于 2013-03-15T09:29:12.323 回答
1

试试这个正则表达式:

(?<=<!-- \|IFNOT:ARCHIVE_PAGE\| -->)(\s|.)*?(?=<!-- \|END:IF\| -->)
于 2013-03-15T09:18:42.357 回答
0

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

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

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

于 2013-03-15T09:30:58.537 回答