我的尝试:
$a = preg_split("/[0-9](\-)[0-9]/", $d);
print_r($a);
如果$d=sometext9-9sometext
,我希望能够从print_r($a);
Array
(
[0] => sometext9
[1] => -
[2] => 9sometext
)
我错过了什么?
答案 0 :(得分:3)
您可以使用
$re = "/(?<=[0-9])(-)(?=[0-9])/";
$str = "sometext9-9sometext";
$a = preg_split($re, $str, $matches, PREG_SPLIT_DELIM_CAPTURE);
print_r($a);
见IDEONE demo。由于-
在第1组(用(...)
括起来)并且我们使用PREG_SPLIT_DELIM_CAPTURE
flag,因此连字符作为结果数组的一部分返回。
PREG_SPLIT_DELIM_CAPTURE
如果设置了此标志,则将捕获并返回分隔符模式中的括号表达式。
lookarounds (?<=[0-9])
和(?=[0-9])
检查但不消耗两端的数字,因此它们保存在与{{1}相邻的元素中}}。在Lookarounds Stand their Ground了解有关该行为的更多信息。