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。感谢你的帮助。
答案 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')
请参阅,所有数字都已正确提取。