Python正则表达式re.findall()仅返回一个匹配项

时间:2019-11-14 15:30:53

标签: python regex

我有一个功能字符串,例如:

[...]

'user1桌面显示(v38)(服务器/端口1001),开始10/17 6:40 \ n',

'user2桌面显示(v38)(服务器/端口1501),开始10/17 6:49 \ n',

'user3桌面显示(v38)(服务器/端口2602),开始10/17 8:33 \ n',

'user4桌面显示(v40)(服务器/端口2702),开始10/17 8:44 \ n'

[...]

我正试图通过使用正则表达式和.findall()函数向所有用户返回相关数据:

            # Check user details
            regexLicenseUser = re.compile(
                r"    (\S+) (.+) (.+) \(v(\S+)\) \((\S+)/(\d+) (\d+)\)"
                r", start \w+ (\d+)/(\d+) (\d+):(\d+)")

            # Get all users per feature
            Users = re.findall(regexLicenseUser, features)

之后,我想将相关数据分组为列(每个用户)

            for LicUser in Users:
                User = LicUser[0]
                Desktop = LicUser[1]
                ...

然后将其作为列表返回:

            sessionInfo = [User, Desktop, ...]

不幸的是,这只返回一场比赛,我需要返回(在这种情况下)四场比赛。有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:0)

您说这些功能是一个列表。如果是这样,Findall将仅在列表的第一个元素中找到匹配项。您需要将所有功能合并到一个可以搜索的字符串中,或​​者创建一个循环以在列表的每个元素上迭代运行findall。 Findall不会遍历列表中的元素。