所有的语言基本上都有这么强大的用法:正则表达式。python里面有这么一种匹配,叫匹配对象和组。
在python中,当能够找到匹配项的时候,他们都会返回MathObject对象,这些对象包括匹配模式的子字符串信息。他们还包含了哪个模式匹配了字符串的哪部分信息---这些部分就是组。
组就是放置在()内的子模式。组的序号取决于它左侧的括号数,组0就是整个模式。例如:
‘this is (my name (cogbee is) who am I) who maybe you (can now)’
组对应关系如下:
0:this is my name cogbee is who am I who maybe you can now
1:my name cogbee is who am I
2:cogbee is
3:can now
好了,介绍了这么多,那么有什么用呢?
用处挺大的。
比如,我们一个文件格式,就拿email报文格式来说,有一项:From:cogbee <cogbee@1345.com>
如果你想获取其中的用户名,该怎么办??
真则表达式啊。
'From:(.*)<.*?>$'
那么,group(1)就是括号内的内容,不就是我们的用户名吗??够简洁吧。
我们能够用的组最多99个。
贴一个树上的程序吧:供参考
import fileinput,re
pat = re.compile('From:(.*)<.*?>$')
for line in fileinput.input():
m=pat.match(line)
if m:print m.group(1)