亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在不消耗分隔符的情況下按正則表達式拆分字符串?

在不消耗分隔符的情況下按正則表達式拆分字符串?

PHP
白衣染霜花 2022-08-05 15:37:12
我有一個字符串,如下所示: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

)

3v4l.org 演示


查看完整回答
反對 回復 2022-08-05
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

如果將分隔符放在捕獲組中,它們將包含在結果中,但作為單獨的元素。所以你會得到preg_split()

["1d20", "+", "3d6", "-", "4d8", "+", "10"]

另一種選擇是使用 代替 ,并使運算符成為正則表達式開頭與項匹配的可選模式。preg_match_all()preg_split()

preg_match_all('/[-+]?[^-+]+/', $string, $matches);


查看完整回答
反對 回復 2022-08-05
  • 2 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號