正则表达式替换标签之间的文本

时间:2013-03-15 09:15:11

标签: regex tags

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

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

感谢名单!

4 个答案:

答案 0 :(得分:2)

这不是很值得推荐但是

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

答案 1 :(得分:2)

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

这将取代身体标签之间的整个内容。

答案 2 :(得分:1)

试试这个正则表达式:

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

答案 3 :(得分:0)

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

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

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