[新手请教]关于python re.match的一个小问题,谢谢

软件和网站开发以及相关技术探讨
回复
lockwar
帖子: 3
注册时间: 2010-12-10 10:59

[新手请教]关于python re.match的一个小问题,谢谢

#1

帖子 lockwar » 2010-12-10 11:14

最近在 http://wiki.ubuntu.org.cn/Python正则表达式操作指南 学习了下python的正则表达式,看到一段代码如下:

代码: 全选

import re
m = re.match("([abc]+)", "abc")   #第2句
m.groups()
输出是:('c', )
请问为什么是这样呢?

如果把第2句改为 m = re.match("([abc+])", "abc")
那么输出是:('abc',)
这又是为什么呢?

再者,如果把第2句改为 m = re.match("([acb])+", "abc")
输出依然是:('c', )

我的疑问是,这个正则表达式到底是如何匹配的,为什么每次匹配的只有一个字母,并且是最大的那个呢?
lockwar
帖子: 3
注册时间: 2010-12-10 10:59

Re: [新手请教]关于python re.match的一个小问题,谢谢

#2

帖子 lockwar » 2010-12-12 17:44

没人愿意赐教么?请高手现身。
Kabie
帖子: 26
注册时间: 2008-12-16 14:31

Re: [新手请教]关于python re.match的一个小问题,谢谢

#3

帖子 Kabie » 2010-12-13 20:40

代码: 全选

>>> m=re.match('([abc]+)','abc')
>>> m.groups()
('abc',)
你肯定弄错了。。。
lockwar
帖子: 3
注册时间: 2010-12-10 10:59

Re: [新手请教]关于python re.match的一个小问题,谢谢

#4

帖子 lockwar » 2010-12-20 16:21

Kabie 写了:

代码: 全选

>>> m=re.match('([abc]+)','abc')
>>> m.groups()
('abc',)
你肯定弄错了。。。
真不是我弄错了。。。
bob0319
帖子: 1
注册时间: 2011-08-20 14:46

Re: [新手请教]关于python re.match的一个小问题,谢谢

#5

帖子 bob0319 » 2011-08-20 19:24

呵呵,是你弄错了,我运行都是

代码: 全选

>>> m = re.match('([abc]+)','abc')
>>> m.groups()
('abc',)
>>> 
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: [新手请教]关于python re.match的一个小问题,谢谢

#6

帖子 cuihao » 2011-08-20 19:48

LZ,我试了Py2、3,都没你那问题。

代码: 全选

cuihao@cuihao-arch /tmp $ python
Python 3.2.1 (default, Jul 11 2011, 12:37:47) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> m = re.match("([abc]+)", "abc")
>>> m.groups()
('abc',)
>>> 

代码: 全选

cuihao@cuihao-arch /tmp $ python2
Python 2.7.2 (default, Jun 29 2011, 11:10:00) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> m = re.match("([abc]+)", "abc")
>>> m.groups()
('abc',)
>>> 
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
回复