RegEx返回空字符串

时间:2012-06-01 09:15:05

标签: php regex

所以,这感觉很傻,但我无法理解它。

我正在尝试从日志文件中捕获id代码和名称,该示例归结为此

$line = "exten => 3002,2,Dial(/dev/null,20); Name Here";
$match = "/exten => ([0-9]{4}),2,Dial\(\/dev\/null,20\); ([\w]*)/Us";

if (preg_match($match, $line, $result))
{
    var_dump($result);  
}

我想抓住3002Name Here。我得到的输出是

array(3) {
  [0]=>
  string(36) "exten => 3002,2,Dial(/dev/null,20); "
  [1]=>
  string(4) "3002"
  [2]=>
  string(0) ""
}

这感觉方式愚蠢地被卡住了,但是我很茫然,所以..我可以帮助帮助PLZ?

2 个答案:

答案 0 :(得分:2)

我的第一个念头:

...([\w]*)/Us";
        ^  ^
        |  |
        |  \_ Ungreedy
        |
         \_ Zero or more

修改

如果您只想要其余部分:

$match = "/exten => ([0-9]{4}),2,Dial\(\/dev\/null,20\); (.+)$/Us";
                                                         ^^^^^

答案 1 :(得分:0)

问题肯定是:([\ w] *)最后。

\ w与空格不匹配,“Name Here”有空格。

我建议([\ w \ s] *)匹配“在这里命名”