详解python正则\b和\B的区别
不知道你会不会出现这种错误,
print(re.findall('er\b','never'))
输出结果却为空?
如果你出现这种问题,说明你没有转义,试着输入以下语句
print(re.findall(r'er\b','never'))
\b,\B是单词边界,不匹配任何实际字符,所以是看不到的;\B是\b的非(补)。
\b:表示字母数字与非字母数字的边界, 非字母数字与字母数字的边界。
\B:表示字母数字与(非非)字母数字的边界,非字母数字与非字母数字的边界。
实例
猜测一下下面的结果,具体答案及详解请[移步][https://blog.csdn.net/uvyoaa/article/details/80854459]
import re
re.split(r'123\b','==123!! abc123. 123. 123abc. 123')
re.split(r'123\b','==123!! abc123. 123\tabc 123')
re.split(r'\b123\b','123 ==123!! abc123.123.123abc.123')
re.split(r'\b123=\b','==123!! abc123,123,123=abc,123')
re.split(r'\b123a\b','==123!! abc123,123,123a\nbc,123')
re.split(r'\b123=\b','==123!! abc123,123,123==abc,123')
# \B
re.split(r'pyc\B','1pycthon py5 2pyc342 pyc1py2pyr pyp3 3pyc# pyc')
re.split(r'py=\B','1py=cthon py5 2py=342 py==1py2py4 pyp3 3py- pyabc')
re.split(r'\b123=\B','==123!! abc123,123,123==abc,123')