私はこのサブパターンを持っています:
<?php
$wavs = 'aaaa="" wav="d" bbbbb="" wav="gerg" ccccc="" wav="" ddddd=""';
preg_match_all('#(?<=wav=").+?(?=")#', $wavs, $matches);
print_r($matches);
?>
次の出力が得られます。
php test.php
Array
(
[0] => Array
(
[0] => d
[1] => gerg
[2] => " ddddd=
)
)
私は2試合だけを期待していましたが:
php test.php
Array
(
[0] => Array
(
[0] => d
[1] => gerg
)
)
ここでの問題は何ですか?余分な無関係な文字列がキャプチャされているのはなぜですか?
編集: (M42 応答)
preg_match_all('#(?<=wav=").*?(?=")#', $wavs, $matches);
それでも不正確な一致になります:
Array
(
[0] => Array
(
[0] => d
[1] => gerg
[2] =>
[3] => " ddddd=
)
)
編集:(スニファー)
はい!ありがとうございます!正確に機能します。
preg_match_all('#(?<=wav=")\w+?(?=")#', $wavs, $matches);
Array
(
[0] => Array
(
[0] => d
[1] => gerg
)
)