繁体   English   中英

正确的python regexp返回NoneType

[英]A correct python regexp returns NoneType

我试图从文本中获取一些子串。

使用https://pythex.org/检查我的正则表达式

pythex.org表明,它是一切正确的与我的正则表达式,但是当我尝试使用它为我的代码第二正则表达式不起作用, 重新返回

AttributeError:'NoneType'对象没有属性'group'

我想打印uri变量。 仅返回时间戳。 代码示例:

import re
line = "2019-01-30 01:05:26.255595500 tracker uri='/tracker_log/?f=__lxGc__&step=1&ses_id=2yz65vcsg0k8zk1952295510&id=123123&type=ad&rt=952301228' referer='https://instagram.com' ua='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0'"

timestamp = re.match("\d+-\d+-\d+.\d+:.\d+:.\d+.\d+", line)
if timestamp:
    print(timestamp.group(0))
uri = re.match("(?<=uri=\').+(?=\' ref)", line)
if uri:
    print(uri.group(0))

任何帮助,将不胜感激!

如果字符串的开头与正则表达式模式匹配,则re.match仅返回匹配对象,这就是您成功匹配字符串开头但不匹配uri字符串的时间戳的原因。

而是使用re.search为正则表达式模式匹配的字符串中的第一个位置返回匹配对象。

例如:

import re

line = "2019-01-30 01:05:26.255595500 tracker uri='/tracker_log/?f=__lxGc__&step=1&ses_id=2yz65vcsg0k8zk1952295510&id=123123&type=ad&rt=952301228' referer='https://instagram.com' ua='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0'"

uri = re.search(r"(?<=uri=\').+(?=\' ref)", line)

print(uri.group(0))
# OUTPUT
# /tracker_log/?f=__lxGc__&step=1&ses_id=2yz65vcsg0k8zk1952295510&id=123123&type=ad&rt=952301228

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM