如何在 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位数字
我正在做一些关于博客解析的练习,这里有一个关于正则表达式的问题:
日志文件的格式为:
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位数字