所以,这感觉很傻,但我无法理解它。
我正在尝试从日志文件中捕获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);
}
我想抓住3002
和Name Here
。我得到的输出是
array(3) {
[0]=>
string(36) "exten => 3002,2,Dial(/dev/null,20); "
[1]=>
string(4) "3002"
[2]=>
string(0) ""
}
这感觉方式愚蠢地被卡住了,但是我很茫然,所以..我可以帮助帮助PLZ?
答案 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] *)匹配“在这里命名”