python正则表达式\b与\B的区别

正则表达式中\b与\B的区别

  • \b匹配单词边界,\B匹配非单词边界。“单词”所指的为Unidcode 的字母数字或下横线字符。下面通过实例来解释二者的区别:
import re
s = " ever "
print(re.findall(r'\bever\b', s))

此时的输出结果是:[‘ever’,证明此时空格在本次匹配中并不影响,正则成功匹配出字符串s中的ever假如说我们在后面在添加一些符号呢?下面我们测试一下:

import re
s = " ever !"
print(re.findall(r'\bever\b', s))

此时的输出结果仍然是:[‘ever’],证明标点符号对本次匹配是不影响的,接着我们在测试一下在后面添加一下英文字符再看一下:

import re
s = " ever !mm"
print(re.findall(r'\bever\b', s))

这个时候的输出结果还是[‘ever’],那么我们在测试一下在要匹配的字符串ever所在的源字符串周围添加英文字符看一下:

import re
s = "mever "
print(re.findall(r'\bever', s))

此时的结果为[],为什么这次的结果与上面三次结果不同呢?接着通过最后一个实验来告诉你们问什么。

import re
s = "mever "
print(re.findall(r'\Bever', s))

此时你会发现正则匹配又得到了1,2,3的相同结果,为什么呢,这就是\b与\B的区别所在。

结论:\b匹配时其要匹配的字符串如例子中的ever在源字符串s中的位置左右不能出现英文字母,相反\B的周围必须出现英文字母。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值