RegEx重复捕获组

时间:2016-06-01 18:41:04

标签: python regex

我有以下数据:

 User ID              Name                                                         Last Activity Date     
 -------------------- ------------------------------------------------------------ -----------------------
UserID1               UserName1                                                    2016-05-31
UserID2               UserName2                                                    2016-05-31
UserID3               UserName3                                                    2016-05-31
...

使用RegEx捕获所有UserID,名称和活动日期的最佳方法是什么?

我目前有User ID\s+Name\s+Last Activity Date\s+[- \s]+(.*?)\s+(.*?)\s{6,}(.*)\s,这可以捕获第一行但是如何重复这一行以获取所有其他行?

1 个答案:

答案 0 :(得分:2)

请查看链接中的正则表达式:https://regex101.com/r/gN2cH2/2 从链接生成的python代码是。此正则表达式捕获除标题行之外的所有USerID,名称,活动日期。

import re
p = re.compile(ur'((UserID[0-9])\s+(UserName[0-9]+)\s+([0-9]{4}-[0-9]{2}-[0-9]{2}))')
test_str = u" User ID              Name                                                         Last Activity Date     \n -------------------- ------------------------------------------------------------ -----------------------\nUserID1               UserName1                                                    2016-05-31\nUserID2               UserName2                                                    2016-05-31\nUserID3               UserName3                                                    2016-05-31"

re.findall(p, test_str)

您可以使用捕获paranthesis组来查找UserID,名称以及捕获和上次活动的值。