Программирование
Все, что вам нужно знать о регулярных выражениях
Узнайте больше о специальных символах и выражениях Regex с примерами.
Регулярное выражение или регулярное выражение — это встроенная функция нескольких языков программирования в разных семействах (JavaScript, Java, C#, C/C++, Python, Ruby, …) для проверки, поиска, замены или проверки строки, если она соответствует определенному образец, который вы хотите, чтобы он выполнял. В следующем тексте мы обсудим большинство специальных символов, которые предоставляет регулярное выражение.
🚨 Все регистрозависимо, если не указан флаг i
.
Якорные операторы
Символы: ^
, $
Операторы привязки — это отдельные символы, которые привязываются строкой/группой символов в начале и/или в конце текста. Эти специальные символы отлично подходят для проверки абзацев, например:
^Hello
— соответствует строке в начале с текстом Hello
Goodbye$
— соответствует строке в конце с текстом Goodbye
^Hello Goodbye$
— соответствует точной строке с текстом Hello Goodbye
Кванторные операторы
Символы: *
, +
, ?
, {}
Кванторные операторы — это символы, которые соответствуют любому количеству строк/групп символов, идущих последовательно, но каждый из этих специальных символов подсчитывает количество по-разному. За символом *
следует 0 или более символов, за символом +
следует 1 или более символов, за символом ?
следует 0 или 1 символ (это необязательный символ), а за символом {}
следует определенное число или диапазон символов, примеры:
abc*
— соответствует строке, за которой ab
следует c
0 или более раз.
abc+
— соответствует строке, в которой ab
сопровождается c
1 или более раз
abc?
— соответствует строке, в которой ab
сопровождается c
0 или 1 раз
abc{3}
— соответствует строке, в которой ab
сопровождается c
3 раза.
abc{3,}
— соответствует строке, в которой ab
сопровождается c
3 или более раз.
abc{3,5}
— соответствует строке, в которой ab
сопровождается c
3–5 раз подряд.
ab(cd)+
— соответствует строке, в которой за ab
следует группа символов cd
ноль или более раз.
ab(cd){2,7}
— соответствует строке, в которой за ab
следует группа символов cd
2–7 раз подряд.
операторы ИЛИ
Символы: |
, []
Операторы ИЛИ — это символы, которые могут соответствовать тому или иному символу, то же самое и с группами символов. Эти специальные символы отлично подходят для проверки некоторого списка вещей, например, вы хотите проверить только два доменных имени в электронных письмах, вы используете or operator
, примеры:
(outlook|gmail).com
— соответствует строке с outlook
или gmail
перед .com
a[bc]
— соответствует строке с символом b
или c
после a
(только с набором символов)
Классы персонажей
Символы: \d
, \w
, \s
, .
Классы символов — это специальные символы, которые позволяют сопоставлять символы старшей группы, например, буквы, цифры, слова, пробелы или любые другие символы. Эти классы, кроме .
, также имеют инвертированную версию с прописными буквами. Примеры:
\d
— соответствует одному символу, который является digit
\D
— соответствует одному символу, который не является digit
\w
— соответствует символу слова (letters
, digits
, _
)
\W
— соответствует всему, кроме слова
\s
— соответствует пробельному символу (spaces
, tabs
, line breaks
)
\S
— соответствует всему, кроме пробела
.
— соответствует любому заданному символу
Диапазоны
Символы: [-]
Диапазоны — это выражения, которые могут соответствовать диапазону букв или цифр с оператором -
между ними, внутри может быть несколько диапазонов без какого-либо разделителя. Это отличный инструмент для сопоставления имен категорий, шестнадцатеричных значений и других примеров:
[a-z]
— соответствует одному символу в диапазоне a-c
.
[0-9]
— соответствует одной цифре в диапазоне 0-9
.
#[a-fA-F0-9]{6}
— соответствует шестнадцатеричному цвету (без альфа-значения)
[^a-z]
— соответствует одному символу, не входящему в диапазон a-z
, символ ^
теперь работает как отрицание
Флаги
Символы: g
, m
, i
Регулярное выражение обычно прикрепляется внутри формы регулярного выражения, начиная и заканчивая /
, например /abc/
. Флаги — это то, что может расширить поиск соответствия в строке выражения. Это отдельные символы, которые идут после выражения, и мы можем комбинировать их друг с другом.
- Флаг
g
, который обозначаетglobal
, не возвращается после того, как находит первое совпадение, он ищет весь переданный ему текст - Флаг
m
, который означаетmulti-line
, когда включен,^
и$
будут сопоставляться в каждой строке в качестве начала и конца, а не всего текста. - Флаг
i
, который означаетinsesitive
, делает выражение нечувствительным к регистру, так что даже если передан неверно набранный текст, регулярное выражение все равно будет выполняться.
Примеры этих флагов:
/abc/g
— глобальное совпадение с выражением abc
/^abc$/m
— соответствует выражению abc
в каждой строке
/aBc/i
— соответствует выражению aBc
без учета регистра.
Советы
- Если мы хотим использовать символ, который уже используется в качестве специального символа, мы просто ставим перед ним
\
. - Вы можете проверить Игровую площадку RegExr, где вы можете попробовать создавать, сохранять и публиковать пользовательские выражения и передавать в них текст. Надеюсь, эта статья оказалась полезной для ваших будущих проектов.
- Если вы хотите использовать регулярное выражение на каком-то этапе своего проекта, вы можете изучить множество онлайн-материалов или всегда можете вернуться к этой статье за дополнительной помощью.
Заключение
Как я уже упоминал выше, теперь вы можете очень ясно понять, почему он так популярен и используется, он может так много сделать. Вы, вероятно, знаете, где вы можете использовать его в своем проекте прямо сейчас, но просто для записи вот список наиболее популярных вариантов использования:
- Проверка данных (например,
emails
,telephone numbers
,ZIP codes
, …) - Сбор данных из Интернета (например,
mass finding content
) - Транскрипция IDE с одного языка программирования на другой
- Подсветка синтаксиса, переименование файлов, замена текстов и т.д.
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.