powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / regex. Последовательность цифр не с нуля
22 сообщений из 22, страница 1 из 1
regex. Последовательность цифр не с нуля
    #39878080
Dmitri Krizhanovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Помогите составить регулярное выражение, с помощью котрого можно получить первую последовательность цифр, которая не начинается с нуля.

Для строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".

У меня пока что используется "[1-9]\d+" - и здесь я получаю "12354687", т.е. часть последовательности цифр, которая начинается с нуля в исходной строке.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878143
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(?<!\d)[1-9]\d+
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878147
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, так последовательность из одной цифры не попадёт в выборку. Правильнее так:

((?<!\d)[1-9]\d+)|[1-9]
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878165
Dmitri Krizhanovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.,

Спасибо.
Только где это работает? На трех сайтах это выражение ((?<!\d)[1-9]\d+)|[1-9] все равно выделяет каждую цифру в исходной строке.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878220
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(^|[^\d])([1-9]\d*)($|[^\d])
fiddle
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878254
Dmitri Krizhanovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Спасибо!

Но здесь fiddle выделяет по одному символу слева и справа от найденого.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878333
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitri Krizhanovski , а посмотреть? в шаблоне определено ТРИ группы - вот они все три и подсвечиваются. тебе нужна только вторая группа.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878345
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Третья группа там, кажись, избыточная - оператор "*" в регекспе жаден по умолчанию.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878461
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitri KrizhanovskiДля строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".
если там всегда нужна цифра между второй и третьей ";", то проще через ";" сделать
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878606
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitri KrizhanovskiДля строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".

Там перед числом всегда идёт ';'? Если да, то: ;[\D]*(?<!0)([1-9]\d+) ]\D] пропускает символы от ';' до первой цифры.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878609
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Ошибся немного:
alekcvp;[\D]*((?<!0)[1-9]\d*)
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878611
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ';' в начале не обязательна, то:
\D(?<!0)([1-9]\d*)
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39878630
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Я даже туплю немного с утра :)

Код: plaintext
\D([1-9]\d*)

...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39879655
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitri KrizhanovskiДля строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".
На JavaScript сделал бы так

Код: javascript
1.
2.
var str="It's my Life;012354687 ;91271-1; 5487";
alert(str.match(/(^|[^\d])([1-9]\d*)/)[2]);
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39879720
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько топиков назад у меня была обратная идея. Генерировать все последовательности по регулярке.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39905152
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П . всё написал сразу. только надо * вместо +

Код: perl
1.
(?<!\d)[1-9]\d*
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39905822
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Несколько топиков назад у меня была обратная идея. Генерировать все последовательности по регулярке.
как это все?
\d* - тут их бесконечно много
ну и конечно регулярки с несколькими lookahead ушатают твой алгоритм
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39905827
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем регулярка.
Мне нужна была генерилка паролей по шаблону.
А там есть лимит на длину.
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39907353
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что делает эта "конструкция"?
Код: javascript
1.
(?<!)


Знаю только такую
Код: javascript
1.
(?!)
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39907483
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы исключить слово надо писать: (?<!слово). несколько слов так и пишутся: (?<!слово)(?<!слово)(?<!слово)
(?<=...) может совпасть слева; (?<!...) не может совпасть слева; (?=...) может совпасть справа; (?!...) не может совпасть справа
также имеется опережающая проверка: (?=\d и (?<=\d первая означает, что совпадение считается в тех позициях, за которыми следует цифра т.е. в позициях ДО цифры, а вторая = обратная (ретроспективная) и работает в позициях ПОСЛЕ цифры, т.е там, где текст начинается с цифры, например: (?=Jeffrey)Jeff ищет Jeff, но найдёт только в том случае, если Jeff будет после этой позиции (поидее она и Gord найдёт также?)
фактически в предложении by Jeffrey Gordon оно найдёт позицию, с которой начинается совпадение (начало перед J в слове Jeffrey), а не весь текст (Jeffrey), и вот отсюда уже будет искать слово Jeff. при этом должно быть именно полностью слово Jeffrey, а не Jeff или Jefferson

если слово Jeffrey найдено, то оно ПЕРЕД ним встанет в позицию и начнёт искать оттуда слово Jeff
а ретроспективная будет искать с позиции ПОСЛЕ слова Jeffrey (конкретно после y??)
при этом Jeff(?=rey) будет тоже самое, что и (?=Jeffrey)Jeff. поскольку найдёт оно Jeff, сразу за которым следует rey.
т.е. эта конструкция (?=) подразумевает расположение текста вокруг неё, но отмеряет поиск этого текста от позиции, которая определяется (?= или (?<=
звучит оно так: (?<=\bJeff)(?=s\b) # найти позицию, перед которой находится текст Jeff, а после находится s
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39908573
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Что делает эта "конструкция"?
Код: javascript
1.
(?<!)

https://learn.javascript.ru/regexp-lookahead-lookbehind#retrospektivnaya-proverka
...
Рейтинг: 0 / 0
regex. Последовательность цифр не с нуля
    #39912325
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно, спасибо.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / regex. Последовательность цифр не с нуля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]