給定這樣的字串:
“7 年 11 個月 3 周”
我需要將其決議出來,以便在 PHP 中,preg_split 函式回傳一個包含以下內容的陣列:
0 => "7 years"
1 => "11 months"
2 => "3 weeks"
年齡字串也可以包含零,例如"0 years 1 month 0 weeks".
我現在擁有的正則運算式字串似乎只在年和月之間分裂:
(?!\d )(?:\s)(?!\D )
那就是放棄計算。
我對正則運算式不是很熟悉,我不知道我做錯了什么。
uj5u.com熱心網友回復:
您可以使用
preg_match_all('~\d \s \w ~', $text, $matches)
請參閱正則運算式演示。
請注意,preg_match_all提取所有出現的模式匹配。
詳情:
\d- 一位或多位數字\s- 一個或多個空格\w- 一個或多個字母/數字/下劃線。
其他正則運算式變體:
\d \s \S-\S匹配一個或多個非空白字符,因此它將匹配帶有連字符和任何其他特殊字符的單詞\d*\.?\d \s \S-\d*\.?\d將匹配整數和浮點值。
注意:要獲取作為子匹配的數字和單詞,請捕獲它們:
preg_match_all('~(\d )\s (\w )~', $text, $matches)
uj5u.com熱心網友回復:
最簡單的解決方案是
$age = '7 years 11 months 3 weeks';
$result = preg_split('/ (?=\d)/', $age);
print_r($result);
您的正則運算式完全等同于\s(?!\D)which 也應該可以正常作業,但如果字串末尾有空格,您會得到不需要的空字串結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454713.html
上一篇:將表資料拆分為頁面
