Расшифровывая простое регулярное выражение

Регулярное выражение в вопросе

(\d{3,4}[.-]?)+

Пример текста

707-7019-789

Мой прогресс до сих пор

(            )+  a capturing group, capturing one or more
 \d{3,4}         digit, in quantities 3 or 4
        [.-]?    dot (or something) or hyphen, in quantities zero or one <-- this is the part I'm interested in

Насколько я понимаю, это должно совпадать с 3- или 4-значным числом, за которым следует точка (или что-либо еще, поскольку точка соответствует чему-либо) или дефис, объединенный в группу, один или несколько раз. Почему это не соответствует

707+123-4567

затем?

3 ответа

Решение

. в группе персонажей [] это просто буквальный ., оно не имеет особого значения "что-нибудь". [.-]? означает "точка или дефис или ничего", потому что вся группа становится необязательной с помощью ?,

Скобки удаляют функциональность точки. Скобки означают "Диапазон"/"Класс персонажа". Таким образом, вы говорите "Выбрать из списка / диапазона / класса персонажей". Вы не говорите "выбрать из списка" что-нибудь "- (что-либо является обычным значением.)

[.-]?

Что это означает буквально:

класс персонажа [.-]

  • Совпадение только с одним из следующих символов: . а также - в прямом смысле.

ленивый квантификатор ?

  • Повторите последний токен от 0 до 1 раза, как можно меньше раз.
Другие вопросы по тегам