如何在 pyspark 中使用正则表达式提取时间戳并从博客中删除尾部?

How to extract timestamp and remove tailing portion from weblog using regex in pyspark?

我正在做一些关于博客解析的练习,这里有一个关于正则表达式的问题:

日志文件的格式为:

in24.inetnebr.com - - [01/Aug/1995:00:00:01 -0400] "GET /shuttle/missions/sts-68/news/sts-68-mcc-05.txt HTTP/1.0" 200 1839

我需要获取时间戳,这是我现在拥有的:

regexp_extract('value', r'((\d\d/\w{3}/\d{4}:\d{2}:\d{2}:\d{2} -\d{4}))', 1).alias('timestamp'),

这个returns我:

01/Aug/1995:00:00:01 -0400

我的问题是 -0400 是什么意思?时区?我该如何删除它?

- 那是 时区

您可以通过删除模式的 -\d{4} 部分来简单地删除它。这就是您要找的东西:

regexp_extract('value', r'((\d\d/\w{3}/\d{4}:\d{2}:\d{2}:\d{2}))', 1).alias('timestamp'),

Online Demo

另作说明:

  • - 匹配破折号加上 space 字面意思
  • \d 匹配一个数字
  • {4}限制为4位数字