'/\b\w{2}\b/'; PHP 正则表达式的意思解释

<?php
	$str = 'This is an example!';
	$preg = '/\b\w{2}\b/';
	$num1 = preg_match($preg,$str,$str1);
	echo $num1.'<br>';
	var_dump($str1);
	$num2 = preg_match_all($preg,$str,$str2);
	echo '<br>'.$num2.'<br>';
	var_dump($str2);
?>

我知道\b是单词分界符,\w是任意一个字符,{2},是匹配两次,这个正则表达式我理解的是匹配到任意2个重复的字符,比如可以匹配到aa、ee这样的字符串,但是$str1的输出结果是'is'。从输出结果看,是匹配到任意两个字符组合的重复,比如opisop,会匹配到op。希望大家能帮助我解释下这个正则表达式的意思。

{2} 是前面的匹配规则重复2次,不是匹配结果重复2次。
\w{2}  就等于 \w\w
2次匹配结果不必相同。
 

{2}就是匹配两次\w, 不一定要相同。 aa 是两个字符,is 也是两个字符 也是满足的

\b是单词分界,\w是任意英文字母或数字或_字符,
\b\w{2}\b 这样就是要匹配两个英文字母左右两边都是单词分界的。
也就是匹配由两个英文字母组成的单词,结果就是 is  其实 an 也能匹配,只是你的程序只取第一个。
 

谢谢您的详细解释,我总算理解了,怪不得后面的an,用all能匹配到!

请问,如果是要匹配到任意两个连续的重复字母,应该怎样写表达式呢?

匹配重复字母需要先用括号()获取一个字母的子匹配结果,然后用 \1 引用第1个子匹配的结果
/(\w)\1/