У меня есть данные, проиндексированные в этом формате 676767 2343423 2344444 32494444. Мне нужно регулярное выражение для шаблона anlayser последние 7 цифр справа. Ex output: 2494444. Шаблон, который мы пробовали [0-9] {7}, который не работает.Упругое поисковое выражение для получения последних 7 цифр справа
ответ
В ElasticSearch образец anchored by default. Это означает, что вы не можете положиться на частичных совпадений, вам нужно соответствовать всей строке и capture последние 7 цифр.
Использование
.*([0-9]{7})
где
.*
- будет найдено 0+, кроме символа новой строки символов (как можно больше), а затем вернуться назад, чтобы соответствовать ...([0-9]{7})
- 7 цифр, помещенных в группу захвата 1.
The Sens e плагин возвращает захваченное значение, если группа захвата определена в шаблоне регулярных выражений, поэтому никакой дополнительной работы по извлечению (или работе с доступом к группе) не требуется.
У меня есть еще один вопрос для вас. Вышеприведенный шаблон получает результат, только если я даю данные выше 7 цифр. Если у меня есть значение длиной менее шести цифр, то оно не возвращается. Нужно ли менять шаблон для получения результатов, если фактическая длина значения меньше 7? – user3351014
Кажется, вам нужно будет вставить пробел в шаблон после '. *', А затем ввести аргумент min для предельного (связанного) квантификатора: '. * ([0-9] {1,7})'. Это приведет к получению от 1 до 7 последних цифр после пробела. –
Пример 1: 123, Пример 2: 6757677687, Пример 3: 123 1232. В этих трех примерах, если я использую шаблон, мне нужно получить выходные данные как. Ex1: 123, Ex2: 7677687, Ex3: 1231232. Не могли бы вы помочь в этом. – user3351014
Не уверен, что вы можете получить доступ к группам захвата, но это кажется вашим единственным вариантом - '\ [. * ([0-9] {7}) \]'. Пожалуйста, дайте мне знать, если это сработает для вас. –
Я пробовал через плагин смысла создавать анализатор. но обратная косая черта не принимается при получении ошибки. Это то, что я пытаюсь. POST/телефон { "Настройки": { "анализ": { "анализатор": { "my_email_analyzer": { "типа": "картина", "шаблон": «. \ [* ([ 0-9] {7}) \]», "в нижнем регистре": правда }} }} } – user3351014
Если нет' [ 'и'] 'в строке, вы можете просто попробовать '. * ([0-9] {7}) '. Или если плагин Sense не привязывает шаблон, используйте '[0-9] {7} $' –