我有一個字符串,如下所示: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 關注
- 151 瀏覽
添加回答
舉報
0/150
提交
取消