正则表达式里\b和\B,Python实例

书上讲的很储蓄,开始没有弄太明白。如果不弄明白,用的时候会非常苦恼。基于此,除了多多理解书本内容,又做了大量实践,总算有点明白了,在此记录一下。一来自己方便查看,二来希望看到此文章的同仁,也能多一点对\b\B的理解。

\b,\B是单词边界,不匹配任何实际字符,所以是看不到的;\B是\b的非(补)。

\b:表示字母数字与非字母数字的边界,     非字母数字与字母数字的边界

\B:表示字母数字与(非非)字母数字的边界非字母数字与非字母数字的边界

看下面实例:

import re #首先加载re模块。
re.split('123\\b','==123!! abc123. 123. 123abc. 123') #结果如下:

箭头所指的地方就是分隔边界,都是数字与非字母数字的边界;同时看到'123abc'没有被分隔,符合\b的意思。

re.split('123\\b','==123!! abc123. 123\tabc 123')

箭头所指的地方就是分隔边界,'123\tabc'被分隔,这里的'\t'是tab键(非字母数字)。

re.split('\\b123\\b','123 ==123!! abc123.123.123abc.123')

可以看到是四对分隔边界,分别对应123前后的\b。

re.split('\\b123=\\b','==123!! abc123,123,123=abc,123')


可以看到只有一对(一处)分隔边界,前面箭头表示非字母数字与数字的边界,后面箭头表示非字母数字与字母的边界

re.split('\\b123a\\b','==123!! abc123,123,123a\nbc,123')

可以看到只有一对(一处)分隔边界,前面箭头表示非字母数字与数字的边界,后面箭头表示字母与非字母数字的边界

re.split('\\b123=\\b','==123!! abc123,123,123==abc,123')

可以看到字符串没有被分隔,是因为箭头处的边界表示非字母数字与非字母数字的边界,不是\b的意思。

下面说一下\B。

re.split(r'pyc\B','1pycthon py5 2pyc342 pyc1py2py4 pyp3 3pyc# pyc')

可以看到有三个分隔边界,都是字母与字母数字的边界,'3pyc#','pyc'没有被分隔,是因为字母与非字母数字的边界。

re.split(r'py=\B','1py=cthon py5 2py=342 py==1py2py4 pyp3 3py= pyabc')

箭头处是分隔边界,表示非字母数字与非字母数字的边界,'1py=cthon','2py=342'没有被分隔,是因为非字母数字与字母数字的边界。

把上面介绍\b时没有被分隔的例子,修改一下:

re.split('\\b123=\\B','==123!! abc123,123,123==abc,123')

有一对(一处)分隔边界,前面箭头处表示非字母数字与数字的边界,后面箭头处表示非字母数字与非字母数字的边界。都符合\b,\B的意思。

到这里希望你能对\b,\B有一点更深入的理解。




  • 42
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值