Регулярные выражения применяются для фильтрации определенных данных из набора данных. Для этого надо применяются шаблон (где мы скажем компьютеру как и что надо фильтровать, по какому правилу) текстового выражения и это же текстовое выражение.
Заходим на сайт https://regex101.com/
Шаблон регулярного выражения пишем в поле REGULAR EXPRESSION
Набор слов и символов пишем в cледующей строке.
Пример 1
Например, надо из набора слов и символов : AFG AFG AFG BFG bFGrth RHHJ rhrthjrtyj отфильтровать все слова с вхождением FG.
Для этого пишем шаблон : [A,B]FG
Всего компьютер посчитает пять вхождений. Потому что: AFGAFG BFGBFG ABFG bFGrth RHHJ rhrthjrtyj .
Если после FG есть даже один символ этот набор символов уже не посчитается. Если пишется ABFG , то компьютер считает только BFG
Регулярное выражение [A,B]FG читаем так: на первой позици должно обязательно присутсвовать или А или B, а после обязательно должно присутствовать FG.
Пример 2
Шаблон: [abc123]
Текст: abc123
Компьютер отфильтрует 6 совпадений. Не одно совпадение, а шесть, так как каждый символ считается отдельно.
Текст: ac3e
Компьютер отфильтрует 3 совпадения - a, c, 3
Пример 3
Шаблон: [^p] - все символы на первой позиции кроме p.
Текст: p
Компьютер отфильтрует 0 совпадений. Так один символ это и есть первый символ.
Текст: ppp
Компьютер отфильтрует 0 совпадений так же.
Текст: p pp - после первого символа p есть пробел.
Компьютер отфильтрует одно совпадение.
Пример 4
Шаблон: [a-z]fgb - все символы от a до z на первой позиции.
Текст: afgb fgb xfgb sfgb tghj
Компьютер отфильтрует три совпадение. Пробел символом из диапазона компьютер не посчитает.
Пример 5
Шаблон: [a-zA-Z]fgb - все символы от a до z на первой позиции включая верхний регистр.
Текст: afgb fgb xfgb sfgb tghj Sfgb Zfgb
Компьютер отфильтрует пять совпадений. Пробел символом из диапазона компьютер не посчитает.
Пример 6
Шаблон: [123456789]fgb - все символы от a до z на первой позиции включая верхний регистр.
Текст: 1fgb fgb 2fgb 3fgb 5tghj Sfgb Zfgb
Компьютер отфильтрует три совпадения. Тот же результат компьютер посчитает если шаблон записать так [1-9]fgb
Пример 7
Простая валидация (проверка введенных данных пользователем) формы. Пользователь вводит 11 цифр мобильного телефона, с помощью регулярных выражений компьютер посчитает введенные данные, если пользователь ввел например 8 цифр компьютер не посчитает введенные данные.
Шаблон: [1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9] - все цифры от 1 до 9 на первой , второй и до одинадцатой позиции расположения символа
Текст: 81111111111 567 64765787
Компьютер отфильтрует одно совпадения. Тот же результат компьютер посчитает если шаблон записать так [1-9]fgb
Пример 8
Предыдущий пример показывает шаблон, состоящий из 11 повторений выражения [1-9]. Можно заменить эти повторения на выражение [1-9]+, что означает любые цифры от 1 до 9 и повторять на первой позиции до бесконечности
Шаблон: [1-9]+ -все цифры от 1 до 9 на первой , второй, третьей... бесконечной позиции
Текст: 81111111111567 64765787 242343
Компьютер отфильтрует три совпадения, позиции мы считаем от первого символа или от первого символа после пробела
Пример 9
В предыдущем примере поменяем регулярное выражение [1-9]+ на [1-9]{11} что означает любые цифры от 1 до 9 и повторять на первой позиции до бесконечности
Шаблон: [1-9]+ -все цифры от 1 до 9 на первой , второй, третьей... бесконечной позиции
Текст: 81111111111567 64765787 242343
Компьютер отфильтрует одно совпадение, позиции мы считаем от первого символа или от первого символа после пробела
Пример 10
Запишем регулярное выражение [a-z]{5} что означает любые буквы нижнего регистра от а до z, которые располагаются от первой позиции до пятой позиции в слове включительно
Шаблон: [a-z]{5}
Текст: eryht re rety ryert rtgr eyukyuhy
Компьютер отфильтрует три совпадения, позиции мы считаем от первого символа или от первого символа после пробела
Пример 11
Запишем регулярное выражение [a-z]{5,8} что означает любые буквы нижнего регистра от а до z, которые располагаются от пятой позиции до восьмой позиции в слове включительно
Шаблон: [a-z]{5,8}
Текст: ytuju tyjyjyjyytjyjyjyj
Компьютер отфильтрует три совпадения, позиции мы считаем только те слова, которые содержат от пяти символов до восьми символов.
Пример 12
Запишем регулярное выражение [a-z]{5,} что означает любые буквы нижнего регистра от а до z, которые располагаются от пятой позиции до бесконечности в слове включительно
Шаблон: [a-z]{5,}
Текст: ytuju tyjyjyjyytjyjyjyj
Компьютер отфильтрует три совпадения, позиции мы считаем только те слова, которые содержат от пяти символов до бесконечного количества символов.
Метасимволы
\d - любой цифровой символ от 0 до 9, аналогичен записи регярного выражению [0-9]. Буква d является первой буквой слова digit и переводится, как цифра.
\w - буквенно цифровой символ от (a-z, A-Z,0-9 и "_"), то есть все буквы нижнего регистра, верхнего регистра, все цифры от 0 до 9 и символнижнего подчеркивания
\s - любой пробельный символ (пробелы, табы, энтер и т.п.)
\t - только символ табуляции
При этом запись просто d это просто буква d, а запись с бэкслешем \d это метасимвол
Пример 13
Запишем регулярное выражение \s что означает любые пробелы, табы и enterы
Шаблон:\s
Текст: жмём tab один раз, потом жмём пробел один раз и жмём enter один раз
Текст: набираем цифру 1, потом жмём tab один раз, потом набираем букву s
Компьютер отфильтрует одно совпадение. Если мы сначала нажмем tab потом напишем цифру 1, а потом напечатаем букву s то компьютер не отфильтрует ни одного совпадения. Поэтому при написании текста отфильтровываются те символы текста, которые располагаются в том же порядке в каком записано регулярное выраженине.
Пример 15
Запишем регулярное выражение \d{3}\s\w{5}. Оно означает что компьютер отфильтрует только те наборы символов, которые содержат в себе по порядку : 1) на первых трех позициях только цифры от 0 до 9 ; 2) потом пробели или enter или tab; 3) потом 5 букв разного регистра от a до z, цифры от 0 до 9 или символ нижнего подчеркивания
Шаблон:\d{3}\s\w{5}
Текст: набираем цифры 123, потом жмём tab один раз, потом набираем пять букв hytjs
Компьютер отфильтрует одно совпадение.
Особые символы
+ - совпадения встречаются один и более раз
\ - символ перехода escape символ
[] - набор символов
[^] - cимвол отрицания в наборе символов
? ноль или одно совпадение (делает предшествующий символ опциональным/необязательным другими словами этот символ может присутствовать а может и нет)
. абсолютно любой символ (кроме символа новой строки)
* совпадения встречается ноль или более раз (схож с +)
Пример 16
Запишем регулярное выражение hello?
Шаблон: hello?
Текст: hello helly helltrt
Компьютер отфильтрует три совпадения.
Пример 17
Запишем регулярное выражение he?llo?
Шаблон: hello?
Текст: hllo helly hlltrt hrlltrt
Компьютер отфильтрует три совпадения. Слово hrlltrt после символа h содержит букву r это означает, что компьютер не посчитает это слово.
"." - любой одиночеый символ
"[a-d]" - любой из них (a,b,c,d)
"$" - конец строки
"^" - начало строки
"\" - экранирование
"[^b]" - найдет не b
"\d" или "[0-9]" -все числа
\D - всё что угодно, кроме чисел
\s - пробел
\S все кроме пробела
\w - любая буква
\W - всё кроме буквы
\b - граница слова
\B - всё кроме границы
g глобальное
i - игнорирование регистра при сопоставлении
n{4} - искать n 4 раза
n{4,6} - искать n от 4 до 6
* - от нуля и выше
+ от 1 и выше
? либо 0 или 1 раз
fgh
Tue, 01/26/2021 - 10:33
Permalink
Регулярные выражения
Регулярные выражения применяются для фильтрации определенных данных из набора данных. Для этого надо применяются шаблон (где мы скажем компьютеру как и что надо фильтровать, по какому правилу) текстового выражения и это же текстовое выражение.
Заходим на сайт https://regex101.com/
Шаблон регулярного выражения пишем в поле REGULAR EXPRESSION
Набор слов и символов пишем в cледующей строке.
Пример 1
Пример 2
Пример 3
Пример 4
Пример 5
Пример 6
Пример 7
Пример 8
Пример 9
Пример 10
Пример 11
Пример 12
Метасимволы
\d - любой цифровой символ от 0 до 9, аналогичен записи регярного выражению [0-9]. Буква d является первой буквой слова digit и переводится, как цифра.
\w - буквенно цифровой символ от (a-z, A-Z,0-9 и "_"), то есть все буквы нижнего регистра, верхнего регистра, все цифры от 0 до 9 и символнижнего подчеркивания
\s - любой пробельный символ (пробелы, табы, энтер и т.п.)
\t - только символ табуляции
При этом запись просто d это просто буква d, а запись с бэкслешем \d это метасимвол
Пример 13
Проверьте на сайте https://regex101.com/
Пример 14
Пример 15
Особые символы
+ - совпадения встречаются один и более раз
\ - символ перехода escape символ
[] - набор символов
[^] - cимвол отрицания в наборе символов
? ноль или одно совпадение (делает предшествующий символ опциональным/необязательным другими словами этот символ может присутствовать а может и нет)
. абсолютно любой символ (кроме символа новой строки)
* совпадения встречается ноль или более раз (схож с +)
Пример 16
Пример 17
"." - любой одиночеый символ
"[a-d]" - любой из них (a,b,c,d)
"$" - конец строки
"^" - начало строки
"\" - экранирование
"[^b]" - найдет не b
"\d" или "[0-9]" -все числа
\D - всё что угодно, кроме чисел
\s - пробел
\S все кроме пробела
\w - любая буква
\W - всё кроме буквы
\b - граница слова
\B - всё кроме границы
g глобальное
i - игнорирование регистра при сопоставлении
n{4} - искать n 4 раза
n{4,6} - искать n от 4 до 6
* - от нуля и выше
+ от 1 и выше
? либо 0 или 1 раз
\d{4}(\s|-) d{4} 4444-444 or 4444 4444
Источники:
1) Курс уроков 16 видео о регулярных выражениях
2) https://regex101.com/