找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3932|回复: 5

[已解决] 简单的正则式没看懂,求助

5

主题

10

帖子

10

积分

贫民

积分
10
井陉小张 发表于 2016-11-26 19:43:52 | 显示全部楼层 |阅读模式
>>> m=re.match('([abc])+','abc')
>>> m.groups()
('c',)
>>> m.group()
'abc'
>>> m.group(1)
'c'
为什么只匹配c呢??【】不是表示字符集吗?[abc]不是表示adc都可以吗?为什么只有c匹配?

回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-11-27 10:02:59 | 显示全部楼层
你说的正则表达式语法是正确的, 但是re的match和search的用法是有区别的, 详细区别分析参见:http://www.pythontab.com/html/2013/pythonjichu_0201/199.html
回复 支持 反对

使用道具 举报

5

主题

10

帖子

10

积分

贫民

积分
10
井陉小张  楼主| 发表于 2016-11-28 18:19:43 | 显示全部楼层
blueelwang 发表于 2016-11-27 10:02
你说的正则表达式语法是正确的, 但是re的match和search的用法是有区别的, 详细区别分析参见:http://www. ...

match是从字符串开头开始,search是从字符串全体去寻找的匹配的。但是和这个没有关系吧。
这个主要是说group(1)为什么是c而不是a呢?
【abc】外面加了()也就是说这个是一个子组,子组只是一个,但是为什么是c而不是a呢????
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-11-29 08:26:14 | 显示全部楼层
因为你用了([abc])+ 使用了+号,那么这个正则表达式就会匹配到字符串的结尾, 所以group(0)的结果是abc, 然后group(1) 会取最后匹配到的字符。
你可以多测试几个例子,它内部就是这么实现的
回复 支持 反对

使用道具 举报

5

主题

10

帖子

10

积分

贫民

积分
10
井陉小张  楼主| 发表于 2016-11-29 13:40:13 | 显示全部楼层
blueelwang 发表于 2016-11-29 08:26
因为你用了([abc])+ 使用了+号,那么这个正则表达式就会匹配到字符串的结尾, 所以group(0)的结果是abc, 然 ...

谢谢
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-11-30 14:45:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表