Elasticsearch — сопоставление шестнадцатеричного числа с фиксированным количеством цифр

#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, который вы отправляете.