我很難找到準確的公式,在單詞超過2個字符的情況下,在空格上分割字串。
$str = 'test 1 vitamin d3 test 2'。
$str_parts = preg_split('#(? :s |(維生素[cde]))#', $str, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE)。
var_export($str_parts) 。
一個理想的輸出是:
['test 1', 'vitamin d3', 'test 2']/code>
uj5u.com熱心網友回復:
你可以在split中使用這個regex:
h (?=w{3})
如果后面有一個至少有3個字符的詞,它就會使用正向查找法匹配1個以上的空白。
代碼:
$str = 'test 1 vitamin d3 test 2'/span>。
$str_parts = preg_split('/h (?=w{3})/', $str) 。
print_r($str_parts)。
輸出:
Array
(
[0] => test 1
[1] => 維生素d3
[2] => 測驗 2
)
uj5u.com熱心網友回復:
你可以使用一個反向邏輯,并提取一個3個或更多字母的單詞和1-2個字母單詞的序列:
preg_match_all('~w{3,}(?:W w{1,2})*~'/span>, $text, $matches)
請看regex演示。詳情:
- 一個詞的邊界 。
w{3,} - 三個或更多的單詞字符 。
(?:W w{1,2})* - 零個或更多出現的
W --一個或多個非單詞字符 。
w{1,2} - 一個到兩個單詞字符 。
- 一個詞的邊界。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307561.html
標籤:
上一篇:如何在regex中正確轉義問號?
