Php 使用preg_Split在分隔符之前的最后一个空格拆分字符串?
我尝试使用preg_split在斜杠之前的每个空格处拆分以下字符串。我知道这将是一个简单的正则表达式,但我似乎无法使用正则表达式来理解它Php 使用preg_Split在分隔符之前的最后一个空格拆分字符串?,php,regex,preg-split,Php,Regex,Preg Split,我尝试使用preg_split在斜杠之前的每个空格处拆分以下字符串。我知道这将是一个简单的正则表达式,但我似乎无法使用正则表达式来理解它 $string = 'DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE KNI M10 DZ9232/LHAGT SUMMER KNI L6'; 我需要在每个/之前的最后一个空格处拆分字符串,以得到以下结果: DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE K
$string = 'DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE KNI M10 DZ9232/LHAGT SUMMER KNI L6';
我需要在每个/之前的最后一个空格处拆分字符串,以得到以下结果:
DZ9243/XSHAGT FFGD JERSE XS2
DZ9232/MHAGT SUUMTE KNI M10
DZ9232/LHAGT SUMMER KNI L6
任何帮助都将不胜感激 以防它不必是正则表达式
$string = 'DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE KNI M10 DZ9232/LHAGT SUMMER KNI L6';
$parts = explode(' ', $string);
$results = [];
$i = -1;
foreach($parts as $part) {
strpos($part, '/') !== false ? $results[++$i] = $part : $results[$i] .= ' ' . $part;
}
var_dump($results);
您可以使用前瞻性断言:
$string = 'DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE KNI M10 DZ9232/LHAGT SUMMER KNI L6';
$pieces = preg_split('@ (?=[^ ]*/)@', $string);
print_r($pieces);
输出为:
Array
(
[0] => DZ9243/XSHAGT FFGD JERSE XS2
[1] => DZ9232/MHAGT SUUMTE KNI M10
[2] => DZ9232/LHAGT SUMMER KNI L6
)
正则表达式
是;通常@
用作分隔符,但此正则表达式尝试匹配/
,这就是为什么最好使用不同的分隔符李>/
- 后跟一个空格字符;它是要用作分隔符的空间,用于拆分输入字符串李>
启动一个组;断言需要该组(
是前瞻性的肯定断言;它要求组匹配输入字符串,但不使用与组匹配的输入字符串中的字符?=
是组内容;它多次匹配任何非空格字符,后跟一个[^]*/
;这是包含斜杠(/
)的单词/
结束分组)
总之,
regex
匹配后跟包含斜杠但未使用的单词的空格;preg_split()
未将其包含在分隔符中,仅使用空格字符。您可以使用先行断言。阅读
@ (?=[^ ]*/)@