preg_match中的正则表达式,返回3个匹配项

时间:2014-01-11 11:01:29

标签: php regex preg-match

我的输入如下:

*test*

我想要的输出是两个星号内的内容(测试) 我的代码如下:

preg_match('/^(\*(.*)\*)$/','*test*',$matches);

它的输出是:

 Array ( [0] => *test* [1] => *test* [2] => test ) 

第三个是我想要的。我知道它为什么这样做,但我不知道如何解决它。如何编写一个只返回测试的RE。

2 个答案:

答案 0 :(得分:2)

您可以使用look-ahead and look-behind assertions

/(?<=^\*).*(?=\*$)/

答案 1 :(得分:0)

您可以使用爆炸功能尝试此操作:

<?php $str = '*test*';
$str1 = explode('*',  $str);
echo $str1[1]; 
?>