From 11a53763e23ab2bf0afcec377083e2e8bc1ba8ee Mon Sep 17 00:00:00 2001 From: David Kaltschmidt Date: Fri, 30 Nov 2018 15:49:54 +0100 Subject: [PATCH] Explore: Fix logging query parser for regex with quantifiers - ensure that selectors have to be preceded by whitespace or line beginning - glacing over the fact that ` {0,1}` could be a valid regexp, but we're using space as query/regexp separators anyway, so I think it's fine for now --- .../plugins/datasource/logging/query_utils.test.ts | 11 +++++++++++ public/app/plugins/datasource/logging/query_utils.ts | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/public/app/plugins/datasource/logging/query_utils.test.ts b/public/app/plugins/datasource/logging/query_utils.test.ts index 1497202f1e8..21f1dbef07f 100644 --- a/public/app/plugins/datasource/logging/query_utils.test.ts +++ b/public/app/plugins/datasource/logging/query_utils.test.ts @@ -42,4 +42,15 @@ describe('parseQuery', () => { regexp: '', }); }); + + it('returns query and regexp with quantifiers', () => { + expect(parseQuery('{foo="bar"} \\.java:[0-9]{1,5}')).toEqual({ + query: '{foo="bar"}', + regexp: '\\.java:[0-9]{1,5}', + }); + expect(parseQuery('\\.java:[0-9]{1,5} {foo="bar"}')).toEqual({ + query: '{foo="bar"}', + regexp: '\\.java:[0-9]{1,5}', + }); + }); }); diff --git a/public/app/plugins/datasource/logging/query_utils.ts b/public/app/plugins/datasource/logging/query_utils.ts index c36961ced58..795d1e2ceeb 100644 --- a/public/app/plugins/datasource/logging/query_utils.ts +++ b/public/app/plugins/datasource/logging/query_utils.ts @@ -1,11 +1,11 @@ -const selectorRegexp = /{[^{]*}/g; +const selectorRegexp = /(?:^|\s){[^{]*}/g; export function parseQuery(input: string) { const match = input.match(selectorRegexp); let query = ''; let regexp = input; if (match) { - query = match[0]; + query = match[0].trim(); regexp = input.replace(selectorRegexp, '').trim(); }