我试着用python做一些模式匹配。但我不明白为什么我只为一场比赛而得到第二场比赛。你知道吗
import re
def Main():
m = "12312312ranger12312319"
pattern = re.compile('(\d$)')
r = pattern.search(m)
if r:
print "Matched " + r.group(0) + " Second " + r.group(1)
else:
print "Not Matched"
if __name__ == '__main__':
Main()
这给了我这样的输出
Matched 9 Second 9
我认为r.group(1)根本不应该在那里。我理解错了吗?你知道吗
因为
$
符号,你匹配字符串的结尾!同样地,9
是第一个和整个匹配的模式,group(0)
(整个匹配)和group(1)
(第一个带圆括号的子组)都返回9
。你知道吗Debuggex Demo
现在如果您不想要
group(1)
,您需要从模式中删除分组并使用r'\d$'
,但是请注意$
匹配最后一个字符9
。你知道吗从wiki:
示例:
组(0)将始终返回匹配的整个文本,无论是否在组中捕获。参见示例:
输出:
因为你在匹配和捕捉一行末尾的最后一个数字。所以组(0)和组(1)指的是相同的。
(\d$)
不仅可以捕获,还可以进行匹配。最后group(0)
打印匹配的字符,group(1)
打印捕获的组索引1中存在的所有字符。你知道吗相关问题 更多 >
编程相关推荐