您的位置:首页 > 其它

正则表达式之字符边界

2017-01-06 19:37 393 查看

零宽与非零宽

非零宽字符:能够匹配字符的(特殊)字符。如:\d会匹配一个数字,\s会匹配空白字符

零宽字符:不匹配字符,只标记位置(具体含义见下文)

字符边界

表达式表示含义
^与字符串开始的地方匹配
$与字符串结束的地方匹配
\b匹配一个单词边界


上例表示:匹配以”a”作为字符串开始的位置



上例表示:匹配以”l”作为字符串结尾的位置

关于\b 的理解

初学者往往对\b感到很困惑,一方面是对\b作为位置标识的不习惯,另一方面是对\b所表示的含义不明确,很多教程给的解释也太书面,因此我认为有必要单独将其列出来进行一下说明。

\b匹配的位置:前面和后面的字符不全是\w(字母,数字,下划线,汉字)

反过来理解就是,如果\b的前面和后面都是\w,则不匹配

示例如下:



先不谈匹配的结果,很多人看到这里可能有这样的疑问,不是说\b匹配的是位置吗?怎么最后匹配的字符串呢?要注意,我们只是说\b匹配的是一个位置,而不是说apple也跟着匹配位置,以第一个匹配成功的黄色高亮显示的apple为例



此例中,\b表示的是apple和左边的空格之间的位置。

接下来分析为什么会有这样的匹配:

\b的后边是apple,属于\w,因为\b匹配的位置前后不能全是\w,所以\b之前就不能是\w了,因此只有apple(前边是空格)、apple11(前边是空格)、apple1(前边是空格)符合。

下面将\b放在apple后面进行测试:



结果请读者自己分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: