【问题标题】:Problem in Labelling Regex groups in Python在 Python 中标记正则表达式组的问题
【发布时间】:2021-02-01 01:42:36
【问题描述】:

我必须从一个句子中形成一个字典为 {'hostingip' : '146.204.224.152','name' : ricky}

146.204.224.152 - ricky [21/Jun/2019:15:45:24 -0700] "POST /incentivize HTTP/1.1" 3024622 在 python 中使用正则表达式。

import re
txt = """146.204.224.152 - ricky [21/Jun/2019:15:45:24 -0700] "POST /incentivize HTTP/1.1" 3024622"""
for x in **re.finditer("^(?P<hostingip>[\d.]+)(?P<name>(?<=-\s)[\w]+)",txt)**:
    print(x.groupdict())

问题是,当我尝试分别查找托管 IP 和名称的模式时,它工作正常,但是当我像上面的代码一样将它们组合在一起时,我没有得到任何输出。请帮忙。

【问题讨论】:

    标签: python python-3.x regex data-science data-cleaning


    【解决方案1】:

    您的组合正则表达式模式必须匹配整个字符串。考虑这个工作版本:

    txt = "146.204.224.152 - ricky [21/Jun/2019:15:45:24 -0700] "POST /incentivize HTTP/1.1" 3024622"
    for x in re.finditer("^(?P<hostingip>\d+(?:\.\d+)*) - (?P<name>\w+)", txt):
        print(x.groupdict())
    

    打印出来:

    {'hostingip': '146.204.224.152', 'name': 'ricky'}
    

    【讨论】:

      【解决方案2】:

      “ - ”是静态文本,因此请直接声明,不要尝试将其包含在模式中。所以你需要对“(pattern1) - (pattern2)”进行一些变化

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 2010-10-20
        • 2014-11-29
        • 1970-01-01
        相关资源
        最近更新 更多