DANic
@DANic
Интроверт

Почему регулярное выражение так работает?

Добрый вечер,

Есть регулярка вида
^(\D.*)\.(\d.*)\.(\D.*)(\d{1,2}).*$

и строка
log-name.log.2016-07-14-02.service-name01.gz
https://regex101.com/r/a6nweZ/1

Почему в 4й группе только 1? почему первый 0 не попадает под \d

если регулярку написать так
^(\D.*)\.(\d.*)\.(\D.*)(\d{2}).*$
то в 4й группе будет 01

вот только в строки могут содержать одну или две цифры в четветой групе.
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
@justabit
Потому что знак . (точка) который вы указываете означает "любой символ" и первый 0 попадает уже в 3ю группу.
^(\D*)\.([\d-]*)\.(\D*)(\d{1,2}).*$
Вот ваш вариант: https://regex101.com/r/a6nweZ/2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы