Regex, чтобы удалить все после -i- (с -i-)

Я пытался найти решение для моей проблемы.

 Input: prd-abcd-efgh-i-0dflnk55f5d45df

 Output: prd-abcd-efgh

Tried Splunk Query : index=aws-* (host=prd-abcd-efgh*) | rex field=host "^(?<host>[^.]+)"| dedup host  | stats count by host,methodPath

Я хочу удалить все, что идет после "-i-" с помощью простого регулярного выражения. Я попытался с регулярным выражением "^(?[^.]+)", Перечисленным здесь

https://answers.splunk.com/answers/77101/extracting-selected-hosts-with-regex-regex-hosts-with-exceptions.html

Пожалуйста, помогите мне решить это.

3 ответа

Решение

replace(host, "(?<=-i-).*", "")

Пример здесь: https://regex101.com/r/blcCcQ/2

это (?<=-i-) это взгляд сзади

Что-то простое, как это должно работать:

([a-z-]+)-i-.+

Первая группа захвата вернет только часть, предшествующую -i-,

Я не знаю Splunk. но нормальный способ сделать это - сопоставить ненужную часть и заменить ее пустой строкой.

Регулярное выражение для этого может быть:

-i-.*

Затем замените совпадение пустой строкой.

Другие вопросы по тегам