首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

sub()功能代码求解释解决方法

2012-02-04 
sub()功能代码求解释Python code p re.compile(x*) p.sub(-, abxd)-a-b-d-求输出 -a-b-d-

sub()功能代码求解释

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

求输出 -a-b-d- 的解释,没有看懂是替换的规则。

[解决办法]
x* 匹配 空字符(零个x)、x、xx、xxx、....
也就是说如果字符串里有x则匹配,没有则会匹配个空字符,这个字符是假想中的一个字符,你可以假想'a'前面有个字符,'a'与'b'之前有个字符,等。
你可以试试
Python code
p=re.compile(r'x{1,}')
[解决办法]
看正则的*和+的区别
*是0-∞
+是1-∞

x*表示0个x,或者1个,或者2个,或者....
x+表示至少1个x,或者2个,或者3个...

那么你的正则替换就明确了,abxd
a之前0个x,b之前0个x,d之前1个x,d之后0个x
至于d之前为什么是1个x,因为正则是贪婪匹配,尽可能多的匹配

好好看下正则语法就明白了
[解决办法]
.a.b.x.d. '.'代表空字符,空字符有和没有对字符串是没有影响的,x*显然与第一个空字符匹配,同第二也匹配,到第三个“.x.”整体与x*匹配,。。。
这样就不难得出那样的输出结果
如果你还不明白,那我也无能无力了,自己查正则方面的资料,看看书吧
探讨

x* 匹配 空字符(零个x)、x、xx、xxx、....
也就是说如果字符串里有x则匹配,没有则会匹配个空字符,这个字符是假想中的一个字符,你可以假想'a'前面有个字符,'a'与'b'之前有个字符,等。
你可以试试
Python code
p=re.compile(r'x{1,}')
比对一下效果

热点排行