Что такое регулярное выражение и как его использовать?
Что такое Regex и зачем его использовать
Regex означает регулярное выражение. По сути, он использует строковый шаблон для поиска в строках.
Регулярное выражение можно использовать в следующих случаях:
- найти конкретную строку
- заменить определенную строку
- разделить строку в определенном месте
- проверить, соответствует ли строка определенному шаблону
Поскольку о регулярных выражениях можно рассказать много, я сделаю два поста о регулярных выражениях. Этот пост будет посвящен некоторым простым регулярным выражениям, а следующий пост будет посвящен тому, как использовать его на python.
Простой шаблон регулярного выражения
Подтвердить 10-значный номер телефона
Допустим, теперь вы создали форму, и пользователям нужно ввести свой 10-значный номер телефона в формате XXXXXXXXXX
(например, 1231231234). Как сделать так, чтобы пользователи всегда вводили правильный день рождения с помощью регулярного выражения? Ну, первый способ, который мы можем сделать, это проверить, вводит ли пользователь 10 цифр. В зависимости от языка программирования, который вы используете, мы можем сначала проверить, все ли введенные символы являются цифрами и равна ли их длина 10. Но мы можем сделать это более элегантным способом, используя регулярное выражение.
\d{10}
это может гарантировать, что строка состоит из десяти цифр. Здесь \d
представляет цифры, в основном от 0 до 9, а {10}
представляет количество шаблона, которому он следует. Так как здесь {10}
следует за цифрой\d
, а это означает, что шаблон состоит из 10 цифр.
Теперь предположим, что нам нужно, чтобы пользователи ввели следующий формат номера телефона XXX-XXX-XXXX
. Мы можем использовать регулярное выражение \d{3}-\d{3}-\d{4}
.
Подтвердить адрес электронной почты
Допустим, теперь мы хотим, чтобы пользователи вводили адрес электронной почты. Для простоты предположим, что адрес электронной почты пользователя имеет следующий формат [email protected]
(например, [email protected]). Здесь X
представляет либо алфавит, либо цифру.
Как это сделать в регулярном выражении?
Ответ [a-zA-Z0-9]+@gmail\.com
Здесь [a-zA-Z0-9]
представляет собой букву или цифру от az до z или от 0 до 9. Чтобы уточнить, [a-z]
представляет букву от a до z, [A-Z]
представляет букву от A до Z, а [0-9]
представляет цифру от 0 до 9. Мы можем объединить эти три в [a-zA-Z0-9]
.
[a-zA-Z0-9]+
означает, что у него есть один или несколько [a-zA-Z0-9]
. Другим примером может быть \d+
, представляющий одну или несколько цифр.
Что касается части домена Gmail, нам нужно избежать точки (добавить обратную косую черту). .
— это зарезервированный символ в регулярном выражении, и его необходимо экранировать. Другими символами, которые необходимо экранировать, являются \+*?^$|[(){
.
Поисковое предложение
Допустим, теперь мы пытаемся найти кого-то из нашей желтой страницы, и мы знаем, что его имя начинается с D, а фамилия начинается с F (например, Дерек Фрэнк).
Как представить это в регулярном выражении?
^D[a-z]+\sF[a-z]+$
Знак моркови ^
означает, что строка должна начинаться со следующего символа, которым является D. А знак доллара $
означает, что строка должна заканчиваться символом, за которым следует символ, который в данном случае является строчным алфавитом. По сути, это гарантирует, что искомая строка начинается с буквы D
и заканчивается другой буквой.
\s
представляет пробел. Нам это нужно, так как между именем и фамилией есть пробел.
Резюме
Чтобы найти 10-значный номер телефона, мы можем использовать \d{10}
. \d
представляет собой цифру от 0 до 9, а {10}
означает, что таких цифр 10.
Чтобы подтвердить адрес электронной почты Gmail, мы можем использовать [a-zA-Z0-9]+@gmail\.com
. [a-zA-Z0-9]
представляет собой комбинацию [a-z],[A-Z],[0-9]
, что означает, что оно представляет собой букву или цифру от AZ или 0–9. Нам также нужно экранировать следующие символы при его использовании: \.+*?^$|[(){
.
Чтобы найти чье-то имя в формате {first name starting with D} {last name starting with F}
, мы можем использовать регулярное выражение ^D[a-z]+\sF[a-z]+$
. ^
и $
представляют собой начинается с и заканчивается на соответственно. \s
представляет пробел.