Belov Solutions

Совпадение с нулевым или единичным количеством символов в регулярных выражениях

Введение

Метасимвол ? — полезный инструмент в регулярных выражениях. Как и +, он позволяет находить дополнительный текст, включая нулевое количество совпадений. Однако, в отличие от +, ? ограничивает совпадение нулевым или единичным количеством символов или набора символов.

Применение метасимвола ?

Метасимвол ? идеален для поиска конкретных дополнительных символов. Рассмотрим пример с URL:

Текст:
Для связи с президентом http://kremlin.ru/, для безопасного соединения используйте https://kremlin.ru/.

Регулярное выражение:
http:\/\/[\w.\/]+

Результат:
Для связи с президентом http://kremlin.ru/, для безопасного соединения используйте https://kremlin.ru/.

Анализ: Шаблон http:\/\/[\w.\/]+ находит только первый URL с префиксом http://, но не https://, так как не учитывает букву s.

Исправление с использованием ?

Для учёта варианта с s используем ?:

Текст:
Для связи с президентом http://kremlin.ru/, для безопасного соединения используйте https://kremlin.ru/.

Регулярное выражение:
https?:\/\/[\w.\/]+

Результат:
Для связи с президентом http://kremlin.ru/, для безопасного соединения используйте https://kremlin.ru/.

Анализ: Шаблон https?:\/\/ допускает как http://, так и https://, ограничивая s одним или нулевым вхождением.

Пример с концом строки

Метасимвол ? решает проблему конца строки:

Текст:
"101","Van","Damme"
"102","Dolph","Lundgren"
"103","Sylvester","Stallone"
"104","Arnold","Schwarzenegger"

Регулярное выражение:
[\r]?\n

Результат:
"101","Van","Damme"\n
"102","Dolph","Lundgren"\n
"103","Sylvester","Stallone"\n
"104","Arnold","Schwarzenegger"

Анализ: Шаблон [\r]?\n учитывает необязательный \r и обязательный \n для совместимости с разными платформами.

Совет

Используйте [\r]? вместо \r? для ясности. Метасимвол ? должен стоять за пределами набора, например, http[s]?: верно, а http[s?]: — нет.

Заключение

Метасимвол ? обеспечивает точное управление совпадениями с нулевым или единичным количеством символов.

Отзывы

Оставить отзыв

Ваша эл. почта не будет опубликована