匹配第8个逗号后的所有内容

时间:2020-09-14 02:26:13

标签: python regex

我正在解析原始日志文件,不得不使用正则表达式,因为逗号分隔符出现在字段中。

20200914 01:38:16,ip-XX-YY-1-202,user,10.0.0.0,978,108421,QUERY,db,'select some random query, that has, commas in it, sometimes and not always quotes either..'

这是maria DB审核日志-我需要选择第8个逗号之后的所有数据库查询。 上面示例的输出为

`'select some random query, that has, commas in it, sometimes and not always quotes either..'`

我正在使用熊猫和.str.extract处理。我有一个hacky版本,可以匹配第8个逗号之前的所有内容,但不确定如何获取它后面的内容。

1 个答案:

答案 0 :(得分:7)

不使用正则表达式的一种方法是使用str.split

s.split(",", 8)[-1]

输出:

"'select some random query, that has, commas in it, sometimes and not always quotes either.'"

基准:

%timeit s.split(",", 8)[-1]

# 511 ns ± 46.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

%timeit re.search("^(?:[^,]*,){8}(.*)$", s).group(1)
# @41686d6564's comment
# 1.52 µs ± 121 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
相关问题