正则表达式谁能看懂指点一下?
下面的谁给我讲讲,看不懂啊,不是只匹配了一个b么?为什么不是用‘-’替换‘b’,出现那么多-?>>> p=re.compile('b*')
>>> m=p.sub('-','abxd')
>>> m
'-a--x-d-' 你只要替换b,就直接找b就行了
import re
p=re.compile('b')
m=p.sub('-','abxd')
print(m)
a-xd
疾风怪盗 发表于 2020-9-20 16:11
你只要替换b,就直接找b就行了
a-xd
这个我知道,我试了好几个,但这个看不懂,想知道原因
b*的意思,是匹配0个或多个
看小甲鱼的解释:
* 这个元字符,当然它不是匹配 '*' 字符本身(我们说过元字符都是有特殊能力的),它用于指定前一个字符匹配零次或者多次。
每个位置都相当于有0个字符b,所以就会在每个位置插入一个 '-'
'abxd'
a 前面匹配到0个 b 插入一个 - ;a后面匹配到一个b,替换为 - ;b后面匹配到0个 b ,插入一个 - ;x后面匹配到0个 b,插入一个 - ;d后面匹配到0个 b,插入一个 -
* 匹配前面的字符零次或多次, 例如: go*gle 该表达式可以匹配的范围从 ggle到goo.......gle sunrise085 发表于 2020-9-20 16:27
b*的意思,是匹配0个或多个
看小甲鱼的解释:
哇,理解了,好厉害{:5_109:},但是最后是在发现到结尾“时又理解为匹配0次?所以末尾又多一个‘-’?
>>> p=re.compile('c*')
>>> p.sub('-','abxd')
'-a-b-x-d-' 嘟嘟酱君 发表于 2020-9-20 18:58
哇,理解了,好厉害,但是最后是在发现到结尾“时又理解为匹配0次?所以末尾又多一个‘-’?
是的。 sunrise085 发表于 2020-9-20 19:24
是的。
非常感谢大神指点{:5_95:}
页:
[1]