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

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

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

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

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

看下面实例:

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

正则表达式里\b和\B,Python实例_第1张图片

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

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

正则表达式里\b和\B,Python实例_第2张图片

箭头所指的地方就是分隔边界,'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')

正则表达式里\b和\B,Python实例_第3张图片

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

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

正则表达式里\b和\B,Python实例_第4张图片

可以看到字符串没有被分隔,是因为箭头处的边界表示非字母数字与非字母数字的边界,不是\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有一点更深入的理解。




你可能感兴趣的:(python,\b,\B,python)