找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1754|回复: 1

[求助] 一个正则表达式怎么理解?

11

主题

26

帖子

26

积分

贫民

积分
26
jingseyi2011 发表于 2018-1-10 13:18:54 | 显示全部楼层 |阅读模式
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)#按照rematch正则表达式的格式re.match(匹配的正则表达式, 字符串,标志位 ),该行的定义怎么理解?

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)#这条语句执行后,输出为:matchObj.group(1) :  Cats
   print "matchObj.group(2) : ", matchObj.group(2)#这条语句执行后,输出为:matchObj.group(2) :  smarter,如果按照group()组从1开始,这里为2的时候为什么输出不是are?
else:
   print "No match!!"


回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2018-1-10 15:33:56 | 显示全部楼层
1、先说标志位 re.I(忽略大小写), re.M(多行模式)
2、再说正则表达式 '(.*) are (.*?) .*' 其中括号是选取的意思,也就是说group(1)就是第一组括号选取的内容,group(2)就是第二组括号选取的内容,而group()是整个正则表达式选取的内容
'.': 匹配任意字符
'.*': 匹配任意字符多次(贪婪模式,能多匹配就多匹配)
'.*?': 匹配任意字符多次(非贪婪模式,能少匹配就少匹配)

回复 支持 反对

使用道具 举报

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

本版积分规则

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