需要两组字符之间的PHP正则表达式

时间:2011-08-17 13:26:45

标签: php regex

我需要一个php的正则表达式,它输出<!--:en--><!--:-->之间的所有内容。 因此,对于<!--:en-->STRING<!--:-->,它只输出STRING

编辑:哦,以下<!--:--> nedds是<!--:en-->之后的第一个因为文本中有更多内容...

4 个答案:

答案 0 :(得分:4)

你想要的那个实际上并不太复杂:

/<!--:en-->(.*?)<!--:-->/gi

您的比赛将在捕获组1中。

说明:

.*?是一个懒惰的量词。基本上,它意味着“保持匹配,直到找到仍然适合这种模式的最短字符串。”这将导致匹配在<!--:-->的第一个实例处停止,而不是在文档中的最后一个<!--:-->之前将所有内容都吸收。

如果我正确地回忆起我的PHP,那么用法就像preg_match("/<!--:en-->(.*?)<!--:-->/gi", $input)

答案 1 :(得分:-1)

如果您只有那个输入

$input  = '<!--:en-->STRING<!--:-->';

您可以尝试使用

$output = strip_tags($input);

答案 2 :(得分:-3)

尝试:

^< !--:en-- >(.*)< !--:-- >$

我不认为任何其他角色需要转义。

答案 3 :(得分:-3)

<!--:en--\b[^>]*>(.*?)<!--:-->

这将匹配您的代码之间的内容。如果你嵌套你的标签会破坏,但你没有说你这样做:)