python正则表达式使用re.compile提取字段

时间:2013-09-15 20:35:22

标签: python regex

array= ['gmond 10-22:13:29','bash 12-25:13:59']

regex = re.compile(r"((\d+)\-)?((\d+):)?(\d+):(\d+)$")

for key in array :
    res = regex.match(key)
    if res:
        print res.group(2)
        print res.group(5)
        print res.group(6)

我知道我做错了。但我尝试了几件事,但都失败了。有人可以帮助我如何使用组或任何更好的方式获取模式macthes。如果模式匹配,我想获取数字。这与re.search一样顺利,但在这种情况下必须使用re.compile。感谢你的帮助。

3 个答案:

答案 0 :(得分:2)

您也可以使用search进行编译。 (match仅匹配开头)

答案 1 :(得分:2)

如果您确定re.findall元素的格式,则可以使用array

>>> import re
>>> array = ["10-22:13:29", "12-25:13:59"]
>>> regex = re.compile(r"\d+")
>>> for key in array:
...     res = regex.findall(key)
...     if res:
...         print res
...
['10', '22', '13', '29']
['12', '25', '13', '59']

答案 2 :(得分:1)

您正在抓住-:,您也有多余的括号。这是修改后的正则表达式的代码:

import re

array = ["10-22:13:29", "12-25:13:59"]

regex = re.compile(r"^(\d+)\-?(\d+):?(\d+):?(\d+)$")
for key in array:
    res = regex.match(key)
    if res:
        print res.groups()

打印:

('10', '22', '13', '29')
('12', '25', '13', '59')

请参阅,所有数字都已正确提取。