-1
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)

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

4

3 回答 3

2

您也可以使用searchwith compile 。(match仅在开头匹配)

于 2013-09-15T20:38:06.150 回答
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']
于 2013-09-15T20:42:25.820 回答
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')

看,所有数字都被正确提取了。

于 2013-09-15T20:39:13.090 回答