详解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')
posted @ 2019-08-29 16:56  小人物哎  阅读(3561)  评论(0编辑  收藏  举报