Get*_*awn 2 php regex preg-match-all
我试图获得点后的值,我想得到所有这些(每个都是他们自己的键/值).
以下是我正在运行的内容:
$string = "div.cat.dog#mouse";
preg_match_all("/\.(.+?)(\.|#|$)/", $string, $matches);
Run Code Online (Sandbox Code Playgroud)
当我做转储$matches我得到这个:
Array
(
[0] => Array
(
[0] => .cat.
)
[1] => Array
(
[0] => cat
)
[2] => Array
(
[0] => .
)
)
Run Code Online (Sandbox Code Playgroud)
在item的[1]位置,它只返回1个值.我期待的是它返回(对于这种情况)2项cat和dog.怎么dog没被捡到preg_match_all?
使用前瞻:
\.(.+?)(?=\.|#|$)
Run Code Online (Sandbox Code Playgroud)
你的正则表达式中的问题是你匹配LHS上的DOT和匹配RHS的DOT或HASH或输入结束.匹配后,内部指针向前移动,不会为下一个字匹配DOT.
(?=\.|#|$)是一个积极的前瞻,与这些角色不匹配,但只是向前看,所以指针保持在cat后面而不是DOT cat..