我有一个数据集,其中包含带有进程和路径的列。我正在尝试将正则表达式与Impala一起使用以剥离可执行文件。数据集如下所示:
C:\\Windows\\System32\\svchost.exe
C:\\Windows\\System32\\conhost.exe
C:\\Windows\\System32\\net1.exe
C:\\Windows\\System32\\schtasks.exe
C:\\Program Files (x86)\\Citrix\\ICA Client\\SelfServicePlugin\\SelfService.exe
C:\\Windows\\System32\\backgroundTaskHost.exe
C:\\Windows\\System32\\net.exe
C:\\Windows\\System32\\conhost.exe
C:\\Program Files (x86)\\Wireless AutoSwitch\\wrlssw.exe
所需的输出:
svchost.exe
conhost.exe
net1.exe
schtasks.exe
SelfService.exe
backgroundTaskHost.exe
net.exe
conhost.exe
wrlssw.exe
我尝试了很多类似以下两个查询的查询,但是一直遇到错误
select regexp_extract(w.destinationprocessname, '([^\\]+)$')
from winworkstations_realtime w
where w.externalid = '4688'
limit 10
错误:
AnalysisException: No matching function with signature: regexp_replace(STRING, STRING).
select regexp_extract(w.destinationprocessname, '\\(?:.(?!\\))+$',0)
from winworkstations_realtime w
where w.externalid = '4688'
limit 10
错误:
Could not compile regexp pattern: \(?:.(?!\))+$ Error: invalid perl operator: (?!
正在寻找对impala或regex有用的任何人的指导。
答案 0 :(得分:1)
不是正则表达式专家,我敢肯定有更好的方法,但这可以完成工作
select regexp_replace(regexp_extract("C:\\\Windows\\\\System32\\\\svchost.exe", ".+(\\\\.+)$", 1), "\\\\", "");