Задать вопрос
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

вот только в строки могут содержать одну или две цифры в четветой групе.
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    RT-001 Эксплуатация RT.DataLake
    1 неделя
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Хекслет
    Fullstack-разработчик на Node.js
    16 месяцев
    Далее
Решения вопроса 1
@justabit
Потому что знак . (точка) который вы указываете означает "любой символ" и первый 0 попадает уже в 3ю группу.
^(\D*)\.([\d-]*)\.(\D*)(\d{1,2}).*$
Вот ваш вариант: https://regex101.com/r/a6nweZ/2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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