我有一个字符串,如下所示:1d20+3d6-4d8+10我想把它分成:1d20, , , .+3d6-4d8+10preg_split()使用 和 符号。告诉它“分裂这些符号,但不要消费它们”的最好方法是什么?我可以暴力破解一个解决方案,但我猜PHP标准库中有一个我不熟悉的简单解决方案。+-
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
您可以使用零宽度的前瞻分隔符( 或 ):+-
$string = '1d20+3d6-4d8+10';
print_r(preg_split('/(?=[+-])/', $string));
输出:
Array
(
[0] => 1d20
[1] => +3d6
[2] => -4d8
[3] => +10
)
POPMUISE
TA贡献1765条经验 获得超5个赞
如果将分隔符放在捕获组中,它们将包含在结果中,但作为单独的元素。所以你会得到preg_split()
["1d20", "+", "3d6", "-", "4d8", "+", "10"]
另一种选择是使用 代替 ,并使运算符成为正则表达式开头与项匹配的可选模式。preg_match_all()
preg_split()
preg_match_all('/[-+]?[^-+]+/', $string, $matches);
- 2 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消