Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 regex. Последовательность цифр не с нуля  [new]
Dmitri Krizhanovski
Member

Откуда:
Сообщений: 496
Привет!

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

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

У меня пока что используется "[1-9]\d+" - и здесь я получаю "12354687", т.е. часть последовательности цифр, которая начинается с нуля в исходной строке.
18 окт 19, 10:50    [21997185]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
Владимир П.
Member

Откуда: Екатеринбург
Сообщений: 440
(?<!\d)[1-9]\d+
18 окт 19, 11:40    [21997258]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
Владимир П.
Member

Откуда: Екатеринбург
Сообщений: 440
Нет, так последовательность из одной цифры не попадёт в выборку. Правильнее так:

((?<!\d)[1-9]\d+)|[1-9]
18 окт 19, 11:43    [21997263]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
Dmitri Krizhanovski
Member

Откуда:
Сообщений: 496
Владимир П.,

Спасибо.
Только где это работает? На трех сайтах это выражение ((?<!\d)[1-9]\d+)|[1-9] все равно выделяет каждую цифру в исходной строке.

К сообщению приложен файл. Размер - 54Kb
18 окт 19, 12:02    [21997287]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19591
(^|[^\d])([1-9]\d*)($|[^\d])
fiddle
18 окт 19, 13:08    [21997361]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
Dmitri Krizhanovski
Member

Откуда:
Сообщений: 496
Akina,

Спасибо!

Но здесь fiddle выделяет по одному символу слева и справа от найденого.
18 окт 19, 13:46    [21997412]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19591
Dmitri Krizhanovski, а посмотреть? в шаблоне определено ТРИ группы - вот они все три и подсвечиваются. тебе нужна только вторая группа.
18 окт 19, 15:04    [21997501]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
fkthat
Member

Откуда:
Сообщений: 1614
Akina,

Третья группа там, кажись, избыточная - оператор "*" в регекспе жаден по умолчанию.
18 окт 19, 15:16    [21997514]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 942
Dmitri Krizhanovski
Для строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".

если там всегда нужна цифра между второй и третьей ";", то проще через ";" сделать
18 окт 19, 18:09    [21997675]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
alekcvp
Member

Откуда:
Сообщений: 1636
Dmitri Krizhanovski
Для строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".

Там перед числом всегда идёт ';'? Если да, то: ;[\D]*(?<!0)([1-9]\d+) ]\D] пропускает символы от ';' до первой цифры.
19 окт 19, 11:55    [21997915]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
alekcvp
Member

Откуда:
Сообщений: 1636
alekcvp,

Ошибся немного:
alekcvp
;[\D]*((?<!0)[1-9]\d*)
19 окт 19, 11:58    [21997918]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
alekcvp
Member

Откуда:
Сообщений: 1636
Если ';' в начале не обязательна, то:
\D(?<!0)([1-9]\d*)
19 окт 19, 12:01    [21997920]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
alekcvp
Member

Откуда:
Сообщений: 1636
alekcvp,

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

\D([1-9]\d*)

Картинка с другого сайта.
19 окт 19, 14:41    [21997953]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13309
Dmitri Krizhanovski
Для строки "It's my Life;012354687 ;91271-1; 5487" нужно получить "91271".

На JavaScript сделал бы так

var str="It's my Life;012354687 ;91271-1; 5487";
alert(str.match(/(^|[^\d])([1-9]\d*)/)[2]);
22 окт 19, 08:48    [21999465]     Ответить | Цитировать Сообщить модератору
 Re: regex. Последовательность цифр не с нуля  [new]
mayton
Member

Откуда: loopback
Сообщений: 42918
Несколько топиков назад у меня была обратная идея. Генерировать все последовательности по регулярке.
22 окт 19, 10:20    [21999546]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить