Как с помощью регулярного выражения получить первое число не начинающиеся на определенные цифры?
Как получить первое попавшиеся число не начинающиеся с 2000000 ?
Дано
2000000116112, 20000004872, 6934177705021, 98343434, 234222, 2000002343574
Нужно получить
6934177705021
Это нужно для гугл таблицы для функции REGEXEXTRACT
Ребята из чата https://t.me/contributor_pw_chat подсказали ответ.
РЕШЕНИЕ
REGEXEXTRACT(REGEXREPLACE(O4:O; "(?:^|, )20000\d*";); "\d+")
Ответы (2 шт):
(\b(?!2000000)\d+\b)
\b - граница слова
(?!2000000) - негативный просмотре вперед
\d+ - один и более символов цифр
\b - граница слова
Пример: regex101.com
А далее уже из полученного результата получить первое значение
После выяснения что автор вопроса использует гугл таблицы, которые не поддерживают негативный просмотр вперед(и многое другое) , предлагаю использовать следующее решение
По пути: Инструменты -> редактор скриптов
Создаем функцию:
function regexmatcher(s) {
var REGEX = /(\b(?!2000000)\d+\b)/g;
return s.match(REGEX)[0];
}
В которой используем регулярное выражение из исходного ответа.
Далее на листе вызываем функцию:
=regexmatcher(адрес ячейки с данными)
Используйте
REGEXEXTRACT(O4:O; "(?:^|,\s)((?:[013-9]\d{4}|\d[1-9]\d{3}|\d{2}[1-9]\d{2}|\d{3}[1-9]\d|\d{4}[1-9])\d*)")
Подробности
(?:^|,\s)- незахватывающая подмаска (используется только для группировки шаблонов): или начало строки, или запятая и пробел после неё((?:[013-9]\d{4}|\d[1-9]\d{3}|\d{2}[1-9]\d{2}|\d{3}[1-9]\d|\d{4}[1-9])\d*)- Захватывающая подмаска (находит возвращаемый текст):(?:[013-9]\d{4}|\d[1-9]\d{3}|\d{2}[1-9]\d{2}|\d{3}[1-9]\d|\d{4}[1-9])- (незахватывающая подмаска) несколько шаблонов, которые по очереди исключают каждую последующую цифру в числе20000(5 цифр, 5 альтернатив):[013-9]\d{4}|- цифра, отличная от нуля, и затем четыре цифры\d[1-9]\d{3}|- цифра, затем цифра, отличная от нуля, и затем три цифры или\d{2}[1-9]\d{2}|- две цифры, цифра, отличная от нуля, и две цифры\d{3}[1-9]\d|- три цифры, затем цифра, отличная от нуля, затем одна цифра или\d{4}[1-9]- четыре цифры и затем цифра, отличная от нуля
\d*- ноль и более цифр.
