嘟嘟酱君 发表于 2020-9-20 15:02:37

正则表达式谁能看懂指点一下?

下面的谁给我讲讲,看不懂啊,不是只匹配了一个b么?为什么不是用‘-’替换‘b’,出现那么多-?


>>> p=re.compile('b*')
>>> m=p.sub('-','abxd')
>>> m
'-a--x-d-'

疾风怪盗 发表于 2020-9-20 16:11:05

你只要替换b,就直接找b就行了
import re
p=re.compile('b')
m=p.sub('-','abxd')
print(m)

a-xd

嘟嘟酱君 发表于 2020-9-20 16:13:58

疾风怪盗 发表于 2020-9-20 16:11
你只要替换b,就直接找b就行了

a-xd

这个我知道,我试了好几个,但这个看不懂,想知道原因

sunrise085 发表于 2020-9-20 16:27:45

b*的意思,是匹配0个或多个
看小甲鱼的解释:
* 这个元字符,当然它不是匹配 '*' 字符本身(我们说过元字符都是有特殊能力的),它用于指定前一个字符匹配零次或者多次。
每个位置都相当于有0个字符b,所以就会在每个位置插入一个 '-'
'abxd'
a 前面匹配到0个 b 插入一个 - ;a后面匹配到一个b,替换为 - ;b后面匹配到0个 b ,插入一个 - ;x后面匹配到0个 b,插入一个 - ;d后面匹配到0个 b,插入一个 -

均昊山 发表于 2020-9-20 16:35:00

* 匹配前面的字符零次或多次, 例如: go*gle 该表达式可以匹配的范围从 ggle到goo.......gle

嘟嘟酱君 发表于 2020-9-20 18:58:06

sunrise085 发表于 2020-9-20 16:27
b*的意思,是匹配0个或多个
看小甲鱼的解释:



哇,理解了,好厉害{:5_109:},但是最后是在发现到结尾“时又理解为匹配0次?所以末尾又多一个‘-’?
>>> p=re.compile('c*')
>>> p.sub('-','abxd')
'-a-b-x-d-'

sunrise085 发表于 2020-9-20 19:24:51

嘟嘟酱君 发表于 2020-9-20 18:58
哇,理解了,好厉害,但是最后是在发现到结尾“时又理解为匹配0次?所以末尾又多一个‘-’?

是的。

嘟嘟酱君 发表于 2020-9-20 19:35:03

sunrise085 发表于 2020-9-20 19:24
是的。

非常感谢大神指点{:5_95:}
页: [1]
查看完整版本: 正则表达式谁能看懂指点一下?