我有一个字符串,其中包含以下模式中的时间,我想在pyspark中提取
......&eventTime=2017-02-22T01%3a02%3a07.1816943Z&......
这是我尝试但没有奏效的; df_event.EventParameters是一个包含时间的列。
df_localTime = pyspark.sql.functions \
.regexp_extract(df_event.EventParameters, '.*(\\d{4}-\\d{2}-\\d{2}T\\d{2}%3a\\d{2}%3a\\d{2}\\.\\{3}).*', 1) \
.alias('localTime')
答案 0 :(得分:2)
阻止它匹配任何东西的是这部分\.\{3}
基本上说
\. match a literal dot
\{ match a literal open brace
3 match a literal three
} match a literal close brace
我认为你的意思是\d
\.\d{3}
因此,弦乐正则表达式现在是'.*(\d{4}-\d{2}-\d{2}T\d{2}%3a\d{2}%3a\d{2}\.\d{3}).*'
现在与此匹配(组1突出显示)
......& eventTime = 2017-02-22T01%3a02%3a07.181
6943Z& ......
格式化(为了便于阅读)
.*
( # (1 start)
\d{4} - \d{2} - \d{2}
T
\d{2} %3a \d{2} %3a \d{2}
\. \d{3}
) # (1 end)
.*