其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

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

GG网络技术分享 2025-03-18 16:15 10


问题描述:

<?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/
 

PHP正则表达式核心技术完全详解 第9节 子模式别名 与 注释

作者:极客小俊 一个专注于web技术的80后

我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!

极客小俊@知乎,官方首发原创文章

博客: 极客小俊GeekerJun





子模式别名的命名语法

preg_match() 和 preg_match_all() 都支持!

(?<name>),(?'name')以及 (?P<name>)了。 之前版本仅接受(?P<name>)方式 案例图: 意思就是取一个别名 其中P是固定的,但不是必须加的,可以不加P 语法: (?P<name>正则模式) 代码案例如下:

标签:

提交需求或反馈

Demand feedback