我有一個數組,並希望檢索只有5個字母的單詞,什麼都不長,我曾嘗試使用正則表達式匹配的只有5個字母的單詞
$new = preg_grep("/.{5}/", $array);
但導致至少是5個字母的單詞長。我想要任何最多5個字母的單詞。
我有一個數組,並希望檢索只有5個字母的單詞,什麼都不長,我曾嘗試使用正則表達式匹配的只有5個字母的單詞
$new = preg_grep("/.{5}/", $array);
但導致至少是5個字母的單詞長。我想要任何最多5個字母的單詞。
您需要使用開始(^)和結尾($)改性劑,所以
$new = preg_grep("/^.{5}$/", $array);
然而,更高效可能只是做一個strlen
基於過濾器:
function len5($v){
return strlen($v) == 5;
}
$new = array_filter($array, 'len5');
你的問題不明確。你想是只有 5個字母,或最多 5個字母長的單詞。這是兩件獨立的事情。
對於前者:
$new = preg_grep("/^.{5}$/", $array);
對於後者:
$new = preg_grep("/^.{1,5}$/", $array);
的^
和$
錨分別標記行的開始和結束。如果您沒有標記,則會匹配abcdef
之類的詞,因爲abcde
將與您的正則表達式匹配。要指定您要匹配整個字符串,而不是字符串的只是一部分。
添加啓動(^
)和結束($
)標記:
$new = preg_grep("/^.{5}$/", $array);
,將在字的中間搭配爲好。你所需要的單詞邊界交換機我認爲這是\w
看到這個:http://www.regular-expressions.info/wordboundaries.html
使用下面的正則表達式從1到5個字符匹配的話。 \b
是一個字邊界
/\b\w{1,5}\b/