Dan*_*boy 2 php regex preg-match-all preg-match
我有这个子模式:
<?php
$wavs = 'aaaa="" wav="d" bbbbb="" wav="gerg" ccccc="" wav="" ddddd=""';
preg_match_all('#(?<=wav=").+?(?=")#', $wavs, $matches);
print_r($matches);
?>
Run Code Online (Sandbox Code Playgroud)
它导致此输出:
php test.php
Array
(
[0] => Array
(
[0] => d
[1] => gerg
[2] => " ddddd=
)
)
Run Code Online (Sandbox Code Playgroud)
虽然我预计只有2场比赛:
php test.php
Array
(
[0] => Array
(
[0] => d
[1] => gerg
)
)
Run Code Online (Sandbox Code Playgroud)
这是什么问题?为什么要捕获额外无关的字符串?
编辑:( M42响应)
preg_match_all('#(?<=wav=").*?(?=")#', $wavs, $matches);
Run Code Online (Sandbox Code Playgroud)
仍导致不正确的匹配:
Array
(
[0] => Array
(
[0] => d
[1] => gerg
[2] =>
[3] => " ddddd=
)
)
Run Code Online (Sandbox Code Playgroud)
编辑:(嗅探器)
天啊!谢谢你,先生!确切的工作!
preg_match_all('#(?<=wav=")\w+?(?=")#', $wavs, $matches);
Array
(
[0] => Array
(
[0] => d
[1] => gerg
)
)
Run Code Online (Sandbox Code Playgroud)
这是什么问题?为什么要捕获额外无关的字符串?
#(?<=wav=").+?(?=")#
^^^
This is the reason, it matches everything including the space and the "
Run Code Online (Sandbox Code Playgroud)
你可能想要:
#(?<wav=")\w+(?=")#
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |