#regex #grafana #grafana-variable
Вопрос:
У меня небольшая проблема, я пытаюсь получить определенные символы из длинной строки с помощью регулярного выражения, но у меня возникли проблемы.
Рабочий процесс
Прометей —> Графана —>> Переменная (с использованием регулярного выражения)
Я не могу использовать ничего, кроме выражений регулярных выражений, для достижения этого результата
В настоящее время я использую это выражение, чтобы захватить длинную строку из некоторого вывода json:
.*channel_id="(.*?)".*
ИЗ ЭТОГО
{account_id="XXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxx",account_name="testalpha",channel_id="s0022110430col0901241usa",channel_abbr="s0022109430col}
Это возвращает строку, которая ВСЕГДА содержит 24 символа:
s0022110430col0901241usa
проблема:
Мне нужно захватить 3 буквы «col» и «сша», поскольку это две команды, которые играют, в идеале я мог бы передать результаты из первого регулярного выражения, чтобы получить эти значения (позиция является ключевой, так как первое значение ВСЕГДА будет 12-14 символов, а второе значение-последние 3 символа), если бы я мог вывести эти значения в верхнем регистре со строкой » vs » между ними, чтобы создать строку, такую как:
COL против США
или
АРГ против БЮСТГАЛЬТЕРА
Я открыт для любых предложений, которые могут у кого-либо возникнуть
Спасибо!
PS — Прописная буква «приятно иметь», НО не нужна
Комментарии:
1. Итак, исходя из этого:
channel_id="s0022110430col0901241usa"
единственное, что имеет значение, — это позицияcol
иusa
?2. Правильно! @ЛомбардиД
Ответ №1:
Я все еще изучаю регулярные выражения, так что это все, что я мог придумать:
Для col
(первой команды):
(?<=(channel_id=".{11}))w{3}
Для usa
(второй команды):
(?<=(channel_id=".{21}))w{3}
Комментарии:
1. (Насколько я знаю) — вам нужно будет найти какой-то другой способ добавить «vs» в вывод, но вы можете записать их в верхнем регистре, используя только регулярное выражение
Ответ №2:
Можете ли вы определить идентификатор канала?
Оно начинается с «s», а затем идет много чисел. Если они всегда являются числами, вы можете использовать это регулярное выражение:
channel_id=".[0-9] ([a-z] )[0-9] ([a-z] )
Вы получите 2 группы, одну с «col», а другую с «США».
Редактировать: Или если вы просто знаете, что у вас всегда один и тот же размер, вы можете использовать что-то вроде:
channel_id=".{11}([a-z] ).{7}([a-z] )
Комментарии:
1. Ради здравомыслия я бы использовал» «, а не»*»
2. Спасибо. Я заменил его на