我已经尝试了很多方法来找到将字符串拆分为数组的方法,我发现正则表达式可以帮助我。我需要的最接近的结果是这个正则表达式:d+^[ a-zA-Z]
,但它是不完整的。
我的字符串是这样的:
$str = '12 Cheeseburger bacon 2 Chips 3 Coke'
我需要的结果是一个包含这个结果的数组:
[0] = 12 Cheeseburger bacon
[1] = 2 Chips
[2] = 3 Coke
感谢大家帮助
此模式d+^[ a-zA-Z]
匹配1个以上的数字,然后使用^
断言字符串的开头,这是不正确的。然后它匹配[ a-zA-Z]
中的单个字符
您可以获得3个结果,其中匹配的数字和后面的匹配字符a-zA-Z在重复中前面有一个空格。
bd+(?:h+[A-Za-z]+)+b
b
单词边界d+
匹配1+位数字(?:
非捕获组h+[A-Za-z]+
匹配范围A-Za-z中的任何一个的1+空间和1+倍
)+
重复1次以上b
A字边界
Regex演示| Php演示
$re = '/bd+(?:h+[A-Za-z]+)+b/';
$str = '12 Cheeseburger bacon 2 Chips 3 Coke';
preg_match_all($re, $str, $matches);
print_r($matches[0]);
输出
Array
(
[0] => 12 Cheeseburger bacon
[1] => 2 Chips
[2] => 3 Coke
)
您可以使用preg_split
:
preg_split('~s+(?=d)~', $s)
此正则表达式匹配数字前的一个或多个空白字符。请参阅regex演示。
请参阅PHP演示:
$s = '12 Cheeseburger bacon 2 Chips 3 Coke';
print_r(preg_split('~s+(?=d)~', $s));
输出:
Array
(
[0] => 12 Cheeseburger bacon
[1] => 2 Chips
[2] => 3 Coke
)