Моя небольшая заметка по регулярным выражениям, может будет кому то полезной и более понятной.
Это конечно не все по регулярным выражениям, но как за основу, надеюсь сойдет...
Регулярка
[\w] - только буквы, числа и нижнее подчеркивание _
[\W]- все кроме букв, чисел и нижнего подчеркивания _
[\d] - только цифры
[\D] - все кроме цифр
[\n] - перенос строки
[\s] - пробел и разделитель
[\S] - найти все что не является символом разделителя
[\t] - найти символы табуляции или табуляцию
Подмаска регулярок:
/a/ ищем символ а
'/a(s|\s)/' - будет искать символ "a и пробел" и "a и s"
\s - символ пробела
() - после которого идет, все что находится в () - является подмаской
| - знак ИЛИ
\ - экранирование
Если без подмаски - () , тогда будет искать "as" и\либо символ "пробела"
'/a./' - Найти вхождение "a" после которого идет любой другой символ - один символ, после "a" (за это отвечает точка ".")
. - один символ после
. - любой символ
'/\s{2, }\w/' - Ограничивать длину последовательности (мы хотим выбрать, только те элементы, в которых у нас идет БОЛЕЕ ОДНОГО пробела и \w - любой другой символ и любой символ, цифра и нижнее подчёркивание _) "2," - означает, два и более раз. так же можно сделать от 2 до 4 с помощью - {2,4}
[] - символьный класс
[\S] - любой символ, кроме пробела
'/[\S]\s{2, }\w/' - До пробелов не должно быть пробела, модификация '/\s{2, }\w/'
Система отрицаний:
^ - означает как НЕ
'/[^,\s]/' - перед которыми НЕ стоят Запятая и символы Пробела
'/^/' - искать что то с начала строки ( если указана ^ не в символьном классе [] )
'/^[A-Z]/' - искать с начала строки заглавные буквы от A до Z
$ - с конца строки ( пример: '/[A-Z]$/')
от 2 до 4 раз - {2,4} - можно написать более просто - 1 и более раз, равен знаку +
* - означает 0 и Более раз...
+ - означает 1 и Более раз...
Ноль или более раз -
'/[\d]{3}/' - цифры, которые будут повторятся 3 раза
\d+ - любая цифра 1 или Более раз
Жадность Квантификатора:
Квантификатор - это и есть тот алгоритм, который разбирает строку, по данному шаблону и ищет соответствие этому шаблону. По умолчанию, Квантификатор - жадный (он пытается захватить максимум символов, удовлетворяющему шаблону)!
'/.+/' - любые символы, 1 или Более раз
'/.+\s/' - любой символ, 1 или Более раз, до любого символа "Пробела"
'/.+\s+/' - любой символ, 1 или Более раз, до любого символа "Пробела" 1 или более раз
? - изменить жадность Квантификатора ( меняется указанием знака "Вопроса" ? ), Пытается захватить минимум символов заданному шаблону.
'/.+?\s+/' - получим массив соответствий!
К примеру: maSFha is, 1234567bc - проверяем данную строку
И получим в виде :
maSFha = 0 элемент
is = 1 второй элемент
1234567bc = 2 третий элемент
'/ /' - ограничитель регулярных шаблонов
Флаги - флаги ставятся после или перед ограничителем:
Регулярных шаблонов '/ /'
'/.+\s+/U'
U - Флаг, который меняет глобально Жадность квантификатора "?"
u - флаг, обозначает что мы осуществляем Мульти байтовый поиск в кодировке utf-8
'/[а-яА-Я]+/u' - вот пример с флагом u - где мы ищем в Мульти байтовой кодировке.
i - флаг i помогает работать и искать как Заглавные, так и строчные буквы (символы)
'/[а-я]+/ui' - вот и собственно пример (можно не указывать еще заглавные типа А-Я)!
Флаги с Многострочным поиском:
m - Флаг, многострочного поиска
'/^.+&/m' - любые символы от начала до конца строки, где от начала - это ^ и до конца строки - это & , где м - это в многострочном поиске (где несколько строк и более)