正则表达式匹配2个标签之间的所有内容

时间:2010-10-28 23:42:27

标签: php regex

我正在尝试使用正则表达式在PHP中捕获以下内容:

  

/ *

     

名称:测试

     

描述:我的测试

     

* /

我已经尝试过这里的代码:Match everything inbetween two tags with Regular Expressions?但它没有捕获新行。

编辑:我使用了下面的常规单行,但它会在看到换行符后立即停止工作

EDIT2:我想要包括我在一个包含大量换行符的大块文本上运行此脚本。我确信我们需要使用*因为我不确定换行次数。

  

/ *(。*?)* /

TIA

2 个答案:

答案 0 :(得分:2)

使用标志s(s代表dotall)

/*(.*?)*/s

这个标志让点也匹配换行符(没有这个标志,它不会)

答案 1 :(得分:2)

好的,好的。正则表达式中的点.与默认情况下的换行符不匹配。你需要/ s修饰符(正则结束后 ):

 preg_match("#/[*](.*?)[*]/#s", ...

另见上文,您需要转义*(使用反斜杠或周围[]),如果您想匹配/,还需要另外一个字符将其括起来。我已经用#代替/

如有疑问,请务必添加/ims。无论如何不使用^ $.和字母都不会导致性能下降。