сгруппировать по части URL, используя регулярное выражение - PullRequest
0 голосов
/ 23 марта 2020

У меня есть несколько URL, все начинаются с /api/net, я хочу сгруппировать по следующей паре строк, которые разделены / как

/api/net/abc/def?key=value
/api/net/c/d?key1=value1
/api/net/j/h?key2=value2

У меня есть ниже регулярное выражение, которое анализирует все URL, но я явно необходимо указать обязательное в регулярном выражении.

| rex field=requestPath "(?<volga>.+?(\/abc\/def)|(\/c\/d)|(\/j\/h).+?)"

volga является именованной группой захвата, я хочу сделать группу на volga без добавления / abc / def, / c / d, / j / h в регулярное выражение, чтобы я мог знать количество выражений вместо жесткого кодирования. Есть другие выражения, которые я бы не знал добавить, поэтому я хочу сгруппировать по следующим 2 словам, разделенным на / после "net", и сделать группировку по, также игнорируя остальную часть URL. Дайте мне знать, если вы не поняли, я мог бы объяснить больше.

1 Ответ

0 голосов
/ 23 марта 2020

Если я правильно понимаю вопрос, это регулярное выражение будет анализировать URL и возвращать два домена как 'dom1' и 'dom2' соответственно. Затем вы можете группировать / сортировать по ним.

... | rex field=requestPath "\/api\/net\/(?<dom1>[^\/]+)\/(?<dom2>[^\/\?]+)"
| stats values(*) as * by dom1,dom2
...