我的字符串是:
$str='Move 10 Casio Watch 20 Apple Iphone 100 Apple Macbook to store';
我用过了:
preg_match_all('| ([0-9]+) (.*) |', $str, $matches);
但它只匹配产品名称的第一个字母。
我的结果:
Array
(
[0] => Array
(
[0] => 10 Casio
[1] => 20 Apple
[2] => 100 Apple
)
[1] => Array
(
[0] => 10
[1] => 20
[2] => 100
)
[2] => Array
(
[0] => Casio
[1] => Apple
[2] => Apple
)
)
Regex: \d+ \K(?: ?[A-Z][a-z]+)+ https://regex101.com/r/iLYiMX/1
Details:
-
\d+
匹配 1 次到无限次之间的数字
-
\K
重置所报告比赛的起点
-
(?:)
非捕获组
-
?
匹配零到一次之间的空格字符
-
[A-Z]
匹配大写字符
-
[a-z]+
在一次和无限次之间匹配小写字符
-
(?:)+
重复匹配一次或无限次
PHP code:
$str = 'Move 10 Casio Watch 20 Apple Iphone 100 Apple Macbook to store';
preg_match_all("~\d+ \K(?: ?[A-Z][a-z]+)+~", $str, $matches);
print_r($matches[0]);
Output:
Array
(
[0] => Casio Watch
[1] => Apple Iphone
[2] => Apple Macbook
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)