正则表达式之 \b

引用网上一段话:

\b 是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是 \b 并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。

如果需要更精确的说法,\b 匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) \w。

很多人不怎么理解正则中的 \b 含义,看到上面一段话后,很多人还是不怎么理解 \b 究竟是怎样的一个“位置”。

今天就来说说我的理解。

什么是位置

It's a nice day today.

'I' 占一个位置,'t' 占一个位置,所有的单个字符(包括不可见的空白字符)都会占一个位置,这样的位置我给它取个名字叫“显式位置”。

注意:字符与字符之间还有一个位置,例如 'I' 和 't' 之间就有一个位置(没有任何东西),这样的位置我给它取个名字叫“隐式位置”。

“隐式位置”就是 \b 的关键!通俗的理解,\b 就是“隐式位置”。

此时,再来理解一下这句话:

如果需要更精确的说法,\b 匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) \w。

我用我的话来翻译一下这句话:

“隐式位置” \b,匹配这样的位置:它的前一个“显式位置”字符和后一个“显式位置”字符不全是 \w。

此刻,有没有一种豁然开朗的感觉?有么有?有么有?有么有?

实例讲解

就用 "It's a nice day today." 举例说明:

正确的正则:\bnice\b

分析:第一个 \b 前面一个字符是空格,后面一个字符是 'n',不全是 \w,所以可以匹配出 'n' 是一个单词的开头。第二个 \b 前面一个字符是 'e',后面一个字符是空格,不全是 \w,可以匹配出 'e' 是一个单词的结尾。所以,合在一起,就能匹配出以 'n' 开头以 'e' 结尾的单词,这里就能匹配出 "nice" 这个单词。

错误的正则:a\bnice

分析:我见过有人类似于这样来写正则,想要达到的目的是匹配出上一个单词以 'a' 结尾,下一个单词以 'n' 开头的部分,这里想匹配出 "a nice"。但是这个正则表达的可不是这个目的,\b 前面是字符 'a',后面是字符 'n',两个都是“显式字符”,显然违背了 \b 的含义,所以这就是个错误的表达式,匹配不出任何东西。想要匹配出 "a nice",正确的正则写法是:a\b.\bnice(不能换行)

相信自己的选择,不要犹豫

(0)

相关推荐

  • 特殊文件: /dev/null和/dev/tty

    一.    特殊文件: /dev/null和/dev/ttyLinux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它的 ...

  • 正则表达式 – 语法 | 菜鸟教程

    正则表达式 - 语法 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件 ...

  • 正则表达式 – 教程 | 菜鸟教程

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式使用单个字符串来描述.匹配一 ...

  • 50道正则表达式笔试题参考答案(第11-20题)

    各位客官姥爷好,欢迎回来.我们在上节给出了前10道正则表达式练习题目和参考答案,相信各位姥爷都有对照着练习.在本节清风将给出第11-20题的参考答案. PS:在各位客官姥爷跟着清风一起完成本系列的练习 ...

  • 50道正则表达式笔试题参考答案(第21-30题)

    各位客官姥爷好,欢迎回来.我们在上节给出了第11-20道正则表达式题目和参考答案,本节将继续正则表达式系列题目,请看下方第21-30题的参考答案. PS:在各位客官姥爷跟着清风一起完成本系列的练习后, ...

  • 50道正则表达式笔试题参考答案(第1-10题)

    各位客官姥爷好,欢迎回来.我们上节留下的50道正则表达式笔试练习题,有不少客官姥爷在后台回复他自己的答案.[嘿嘿,相信肯定也有偷懒没做的(收藏夹里吃灰).没关系,清风在这里陪您一起做] 一次性做50道 ...

  • 50道正则表达式笔试题参考答案(第31-40题)

    各位客官姥爷好,欢迎回来.我们在上节给出了第21-30道正则表达式题目和参考答案,本节将继续正则表达式系列题目,请看下方第31-40题的参考答案. PS:在各位客官姥爷跟着清风一起完成本系列的练习后, ...

  • 在Excel中像使用函数一样优雅的使用正则表达式

    从杂乱的数据中提取数值.提取字母.汉字这样的需求,实在是太常见了,我浏览论坛几乎每天都可以看到很多,以至于我想Excel应该有一个这样的函数.但是没有,于是我自己写了一个,也是为了方便在Excel中练 ...

  • “re正则表达式”示例

    我们想要得到字符串 s1 中的 a,使用 search() 函数应该怎么做. s1 = 'ab黄cd同abc学' r2 = re.search('a',s1) r2.group() 结果如下:

  • 50道正则表达式笔试题参考答案(第41-50题)

    各位客官姥爷好,欢迎回来.我们在上节给出了第31-40道正则表达式题目和参考答案,本节将继续正则表达式系列题目,请看下方第41-50题(数据人表示后面几道工作中最常用) PS:作为50道题目的最后一节 ...

  • 000-Python正则表达式,从入门到实战,精华都在这里!

    来源:Python数据之道 作者:Peter,来自读者投稿 玩转正则表达式 本文中介绍的是主要是 3 个知识点: 正则表达式的相关知识 Python的中 re 模块,主要是用来处理正则表达式 一个利用 ...