金山WPS

关注公众号 jb51net

关闭
软件教程 > 办公软件 > 金山WPS >

我终于理解透了! 深入浅出wps正则表达式中的边界\b和\B概念

脚本之家

有的小伙伴反馈WPS表格“正则表达式 \b与\B 单词边界概念太抽象了”,我咋理解不了呢?不用怕,我们再来深入的研究一下。

\b(单词边界)含义:

匹配单词的开始或结束位置,即单词与非单词字符(如空格、标点符号、字符串首尾)之间的“零宽度”边界。

\B(非单词边界)含义:

匹配不在单词边界的空字符串,即单词字符之间或非单词字符之间的位置。

单看两者的概念,我们好像云里雾里,不明其所以然。

其实我们可以这样理解:

单词边界 \b 就像贴在单词首尾的“隐形标签”,用来标记单词的开始或结束位置。非单词边界 \B 正好互补,匹配不在单词边界的字符,只匹配连续字符内部的位置。常用于连续文本中的子串提取。两者定位的只是位置,本身不占用字符。

我知道你还没听懂,话不多说,上例子。

我们先来看\b(单词边界)占用的位置。

输入公式:

=REGEXP(A2,"\b",2,"|")

我们利用"\b"定位A2中的单词边界,找到边界后,用替换模式,在定位到的单词边界处替换为分隔符“|”,这样我们可以更加直观的看到单词边界在哪里。

很明显:“location”的首尾处分别是单词边界,“cat”的首尾处分别是单词边界。

印证了我们之前抽象的概念:匹配单词的首尾边界。

应用理解1:

我们要将单独的单词“cat”,替换为“猫”,而“location”中的“cat”则无需替换。这时候就用到了单词边界的概念。

我们输入公式:

=REGEXP(A2,"\bcat\b",2,"猫")

这样我们将左右单词边界\b之间为单纯“cat”的部分,即单独的单词“cat”定位提取,然后替换为"猫"。“location”中的“cat”部分自动忽略。

应用理解2:

我们想要将A2单元格内,单独是4个字母的单词提取出来。很明显只有单词“blue”符合这个要求。那么我们就可以利用\b(单词边界)的思路解决。

我们输入公式:

=REGEXP(A2,"\b",2,"|")

首先我们先来观察一下A2单元格内容的单词边界。利用"\b"定位单词边界,然后将边界位置暂时替换为分隔符“|”,有助于我们肉眼直接观察,将抽象具象化。

我们观察到了单词边界的位置,其实就是3个单词它们分别的首尾处。又一次印证了我们之前抽象的概念:匹配单词的首尾边界。\b是“单词保镖”,专管独立内容。

我们完善单词边界:

=REGEXP(A2,"\b\w{4}\b",0)

\w{4}:表示精确到4个字符长度的任意字母

在上面3组单词边界的首尾处,符合\b\w{4}\b,即首尾单词边界\b中间为“4个字母”的只有“blue”了。所以用提取模式,将“blue”提取出来就好了。

我们再来看\B(非单词边界)占用的位置。

输入公式:

=REGEXP(A2,"\B",2,"|")

利用"\B",定位非单词边界位置,然后用替换模式,将定位到的非单词边界位置,用分隔符"|"替换。这样做的好处仍然是化抽象为具象,更容易被肉眼观察具体位置。

很明显,我们观察到:单词非边界位置,正好是单词边界位置的剩余位置,即排除了独立单词“location”与“cat”各首尾部分位置后,剩余的单词内部,字母之间,符号之间的位置。

应用理解1:

我们要将连续内容“location”中的“cat”替换为“猫”。而单独的单词“cat”不做处理。这时候就用到了非单词边界。

输入公式:

=REGEXP(A2,"\Bcat\B",2,"猫")

被非单词边界\B左右包围起来的“cat”,只存在于“location”这个连续字母之中。所以用替换模式,将“location”中包含的“cat”替换为“猫”,独立单词“cat”将不做处理。

应用理解2:

我们想要在数字之间批量加上符号“-”。

输入公式:

=REGEXP(A2,"\B",2,"-")

用非单词边界"\B",定位到数字字符串中的非单词边界位置,即除了首尾位置后,字符内部中间部分的位置,也就是内部数字与数字之间的位置,用替换模式,将这些位置替换为“-”即可。

应用理解3:

我们想要提取任意统一4位数字的中间2位数字。

输入公式:

=REGEXP(A2,"\B",2,"|")

利用非单词边界\B,将定位到的非单词边界位置先暂时用"|"替换,化抽象为具象,更容易被肉眼观察非单词边界位置。

我们观察到非单词边界位置,位于数字字符串内部的数字之间的位置。

我们继续完善非单词边界:

=REGEXP(A2,"\B\d{2}\B",0)

d{2}:为任意的2位数字。

符合左右被非单词边界\B包围的任意的2位数字,只有数字字符串中间的2位数字。用提取模式进行提取即可。

推荐阅读:超全面使用方法! WPS表格更新的16个新函数个个都是yyds