Выбор строки после последнего \\ с помощью регулярного выражения с Impala SQL - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть набор данных со столбцом с процессами и путем.Я пытаюсь использовать регулярные выражения с 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: (?!

Требуется руководство от любого, кто хорош с импалой или регулярным выражением.

1 Ответ

0 голосов
/ 04 декабря 2018

Не будучи экспертом по регулярным выражениям, я уверен, что есть лучший способ, но это делает работу

select regexp_replace(regexp_extract("C:\\\Windows\\\\System32\\\\svchost.exe", ".+(\\\\.+)$", 1), "\\\\", "");
...