【问题标题】:Python - Using RegEx to extract only the String in between patternPython - 使用正则表达式仅提取模式之间的字符串
【发布时间】:2019-08-09 22:16:56
【问题描述】:

希望有人能指出我正确的方向。

我正在尝试解析日志文件以了解每天有多少用户登录系统。

日志文件按照下面列出的模式生成。

" "8764","ABCREX/John Doe","00.000.0.000","用户 'ABCREX/John Doe' 从地址 '00.000.0.000' 成功登录。" " " "8764","ABCREX/Jerry Doe","00.000.0.000","用户 'ABCREX/Jerry Doe' 从地址 '00.000.0.000' 成功登录。" " " "8764","ABCREX/Jane Doe","00.000.0.000","用户 'ABCREX/Jane Doe' 从地址 '00.000.0.000' 成功登录。" “

我正在尝试从上述行中捕获用户名并加载到数据库中。

所以我只对价值观感兴趣

约翰·多伊、杰瑞·多伊、简·多伊

但是当我使用 REGEX 进行模式匹配时,它会返回以下内容

client="ABCREX/John Doe">

然后使用我正在使用的代码,我必须应用多个替换来删除 “客户”、“ABCREX/”、“>”...等

我目前有正在运行的代码,但我觉得它非常低效且耗费资源。我正在对标签执行拆分,然后逐行解析阅读。

'''提取用户登录名''' UserLoginName = str(re.search('client=(.*)>',items).group()).replace('ABCREX/', '').replace('client="','').replace ('">', '')

打印(用户登录名)

有什么方法可以告诉 REGEX 只抓取在模式中找到的字符串,而不是在结果中包含模式?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    pattern = r'User\s\'ABCREX/(.*?)\''

    list_of_usernames = re.findall(模式,输出)

    这将匹配模式 “用户 'ABCREX/Jerry Doe'” 并提取用户名并将其添加到列表中。这有帮助吗?我也是新来的,如果有更多可以帮助回答的,请告诉我。

    【讨论】:

      猜你喜欢
      • 2018-11-22
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多