sunrise085 发表于 2020-5-21 17:28:54

python 正则表达式中'\b'和'\B'对于字母和其他字符效果相反吗?

本帖最后由 sunrise085 于 2020-5-23 23:48 编辑

正则表达式中,'\b'匹配单词边界,'\B'匹配非单词边界
我今天写一个程序的时候发现,对于字母匹配的时候这两个是正常的,但是对于其他字符匹配的时候好像是相反的。
不知道是哪里理解的不对。
请大神帮助讲解一下。
下面是例子
import re
string = 'asdf th...rer theree geermon... asdf...'
string = re.sub(r'e{2}\B','',string) #删除非单词末尾的两个e
print(string)
string = re.sub(r'(\.){3}\B','',string) #删除非单词末尾的三个点
print(string)

string = 'asdf th...rer theree geermon... asdf...'
string = re.sub(r'e{2}\b','',string)#删除单词末尾的两个e
print(string)
string = re.sub(r'(\.){3}\b','',string) #删除单词末尾的三个点
print(string)
运行结果:
asdf th...rer theree grmon... asdf...
asdf th...rer theree grmon asdf
asdf th...rer ther geermon... asdf...
asdf threr ther geermon... asdf...

看上去,对于字母和非字母的效果好像刚好相反。
求解惑

hrp 发表于 2020-5-21 17:37:00

既然\b是匹配单词边界,对符号当然是无效,有时候单词的边界就是符号(个人理解)

ouyunfu 发表于 2020-5-21 17:52:29

\b 在search()中表示特殊字符(a-z A-Z 0-9之外的字符)

\B 在search()中表示字母或数字

sunrise085 发表于 2020-5-22 09:09:55

本帖最后由 sunrise085 于 2020-5-22 09:12 编辑

为什么没有大神给讲解一下乜~~
我在网上查了一下,也没有弄得很明白。。。
@qiuyouzhi @zltzlt
有人了解吗?

qiuyouzhi 发表于 2020-5-22 09:20:38

sunrise085 发表于 2020-5-22 09:09
为什么没有大神给讲解一下乜~~
我在网上查了一下,也没有弄得很明白。。。
@qiuyouzhi @zltzlt


我不爱用正则,zltzlt开学了{:10_250:}

sunrise085 发表于 2020-5-22 09:27:57

qiuyouzhi 发表于 2020-5-22 09:20
我不爱用正则,zltzlt开学了

都没几个人回答,也没有满意的答案,二楼和三楼说的都不太好,可以不选最佳么

qiuyouzhi 发表于 2020-5-22 09:30:05

sunrise085 发表于 2020-5-22 09:27
都没几个人回答,也没有满意的答案,二楼和三楼说的都不太好,可以不选最佳么

嗯嗯,可以的
要是实在没有好回答,建议改成技术交流帖

sunrise085 发表于 2020-5-22 09:35:05

qiuyouzhi 发表于 2020-5-22 09:30
嗯嗯,可以的
要是实在没有好回答,建议改成技术交流帖

哦哦,好的。我再等等,若明后天再没人的话,我就改一下帖子分类

zwhe 发表于 2020-5-31 10:54:19

{:10_264:}
页: [1]
查看完整版本: python 正则表达式中'\b'和'\B'对于字母和其他字符效果相反吗?