|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import re
line = "Cats are smarter than dogs"
# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
# (.*?) 表示"非贪婪"模式,只保存第一个匹配到的子串
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print ("matchObj.group() : ", matchObj.group())
print ("matchObj.group(1) : ", matchObj.group(1))
print ("matchObj.group(2) : ", matchObj.group(2))
else:
print ("No match!!")
以上实例执行结果如下:
matchObj.group() : Cats are smarter than dogs
matchObj.group(1) : Cats
matchObj.group(2) : smarte
问题来了,我参照上面这个程序做了点变动,如下所示:
import re
li="Cats are smarter than dogs"
ma=re.match(r'(.*) are (.*?).*',li,re.M|re.I)
if ma:
print(ma.group())
print(ma.group(1))
print(ma.group(2))
else:
print('no match')
输出结果却是下面这样,不知道为何ma.group(2)输出为空,我百思不得其解。
Cats are smarter than dogs
Cats
非贪婪模式后面需要放一个字符作为寻找终止标示。
如:
没有终止标示,则不会进行检索
而有了如'r',后,会更具标示,检索到第一个'r'位置处
|
|