Regex 正则表达式只匹配5个字母单词
我有一个数组,只想检索5个字母的单词,不再检索,我已经尝试使用了Regex 正则表达式只匹配5个字母单词,regex,Regex,我有一个数组,只想检索5个字母的单词,不再检索,我已经尝试使用了 $new = preg_grep("/.{5}/", $array); 但这导致了任何一个单词至少有5个字母长。我想要任何长度不超过5个字母的单词。你的问题不清楚。你想要只有5个字母长的单词,还是最多5个字母长的单词。这是两件不同的事情 对于前者: $new = preg_grep("/^.{5}$/", $array); 对于后者: $new = preg_grep("/^.{1,5}$/", $array); ^和$锚分
$new = preg_grep("/.{5}/", $array);
但这导致了任何一个单词至少有5个字母长。我想要任何长度不超过5个字母的单词。你的问题不清楚。你想要只有5个字母长的单词,还是最多5个字母长的单词。这是两件不同的事情 对于前者:
$new = preg_grep("/^.{5}$/", $array);
对于后者:
$new = preg_grep("/^.{1,5}$/", $array);
^
和$
锚分别标记行的开始和结束。如果没有标记,您将匹配类似abcdef
的单词,因为abcde
将与正则表达式匹配。您需要指定要匹配整个字符串,而不仅仅是字符串的一部分。添加开始(^
)和结束($
)标记:
这也会在一个单词的中间匹配。你需要单词边界开关我想它是
\w
请参见:您需要使用start(^)和end($)修饰符,因此
$new = preg_grep("/^.{5}$/", $array);
但是,更有效的方法可能是只执行基于strlen
的过滤器:
function len5($v){
return strlen($v) == 5;
}
$new = array_filter($array, 'len5');
使用下面的正则表达式匹配1到5个字符的单词<代码>\b是一个单词边界
/\b\w{1,5}\b/
/\b\w{1,5}\b/