python - 正确的 python 正则表达式返回 NoneType

标签 python regex python-3.x

我正在尝试从文本中获取一些子字符串。

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

pythex.org 显示我的正则表达式一切正常,但是当我尝试将它用于我的代码时,第二个正则表达式不起作用并且 re 返回

AttributeError: 'NoneType' object has no attribute '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

关于python - 正确的 python 正则表达式返回 NoneType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54490410/

相关文章:

python - Anaconda:通过 conda pip 安装的软件包的行为无法解释

python - 使用 Python 自动下载嵌入式 PDF 文件

python - 使用 Docker 在 Google App Engine Flex 上部署 Flask 应用程序

Javascript 正则表达式 - 字符串到 RegEx 对象

regex - 在 powershell 选择字符串输出中删除以 *(asterisk) 开头的行

python - "Literally"将字符串转换为字节数组

python - 从 Django 表单实例中检索变量

javascript - 正则表达式匹配文本后跟空格或什么都不匹配

python - 使用 *args 格式化字符串

python - 如何读取用户的输入并创建二维列表?