【发布时间】:2019-02-02 05:55:28
【问题描述】:
我正在尝试从文本中获取一些子字符串。
使用https://pythex.org/ 来检查我的正则表达式
pythex.org 显示我的正则表达式一切正常,但是当我尝试在我的代码中使用它时,第二个正则表达式不起作用并且 re 返回
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))
任何帮助将不胜感激!
【问题讨论】:
-
I can't reproduce your problem,你的代码对我有用。
-
@TimBiegeleisen OP 期望输出 2 件事(日期时间和 uri),而不是 1。如果您将
re.match更改为re.search,正如 @benvc 正确建议的那样,那么 OP 的问题是已解决。 -
你可以完全避免使用正则表达式,正如俗话所说:有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有了两个问题。 例如,
uri_str = next(filter( lambda str : str.startswith('uri'), line.split(' ') ))
标签: python regex python-3.x