#regex #elasticsearch
#регулярное выражение #elasticsearch
Вопрос:
Я пытался сопоставить, используя query_string и подстановочный знак, чтобы исключить некоторые значения в моих данных.
Среди прочих у меня есть значения следующего типа:
qa4689f54ad-XYXY
Итак, значение начинается с ‘q’, затем у меня есть шестнадцатеричное число из 10 цифр, за которым следует дефис, а затем остальное.
Я попробовал очевидное выражение q [a-fA-F0-9] {10} * (с escape ), но оно не соответствует!
Когда я пытаюсь использовать одно и то же регулярное выражение на веб-сайтах для тестирования регулярных выражений, оно идеально совпадает.
Я прошел, возможно, через 10 вопросов, связанных с регулярным выражением в Elasticsearch, но тщетно.
Может кто-нибудь, пожалуйста, помочь? Спасибо.
Комментарии:
1. «с escape » — что это должно означать? В этом регулярном выражении нет , поэтому нечего экранировать. Покажите выражение, которое вы используете, точно и с большим контекстом.
2. Нужно проверить, содержит ли строка новые строки? Попробуйте
q[a-fA-F0-9]{10}(.|n)*
Ответ №1:
{10}*
недопустимая конструкция в регулярных выражениях.
Вы имеете в виду:
q[a-fA-F0-9]{10}.*
или (чтобы убедиться, что дефис есть):
q[a-fA-F0-9]{10}-.*
или (чтобы убедиться, что совпадение происходит в начале строки)
^q[a-fA-F0-9]{10}-.*
Комментарии:
1. Спасибо за ваш ответ. ^ не допускается в Elasticsearch, что касается .* вместо *, это не исправило. Я проверю больше.
2. @Rakesh Ах, я не знал. Однако остальная часть выражения поддерживается и
.*
, безусловно, является правильным способом сказать «любой символ». Пожалуйста, добавьте к вашему вопросу весь запрос JSON, который вы отправляете.