Символы и метасимволы
- . - (точка) любой символ, за исключением символа начала новой строки (перевода на новую строку?)
- ^ - начало строки
- $ - конец строки
- \b - начало или конец слова
- \s - пробел
- \S - все что не является пробелом (т. е. не пробел)
- \f - перевод страницы
- \n - перевод строки
- \r - перевод каретки
- \t - горизонтальная табуляция
- \v - вертикальная табуляция
- \d - любая цифра (арабская, 0-9)
- \D - не цифра
- \w - символ, встречающийся в английских словах (обычно в языках программирования). Аналог [A-Za-z0-9_]
- \W - не символ слова. Аналог [^A-Za-z0-9_]
Отслеживание повторений символов
Синтаксис - [символ][признак повторения]
Признаки повторения могут быть такими
- ? - это 0 или 1 указанных символов
- * - это 0 или больше указанных символов
- + - это 1 или больше указанных символов
- {n} - указанное кличество символов (n-количество символов)
- {n,} - не менее n совпадений
- {n,m} - это от n до m указанных символов
Жадные и ленивые кванторы
Метасимволы типа * и + являются жадными, т.е. они ищут самое длинное возможное соответствие, а не наименьшее. Если жадное соответсвие ненужно, тогда надо использовать ленивые кванторы.
Жадный |
Ленивый |
* |
*? |
+ |
+? |
{n, } |
{n, }? |
Как использовать отрицание
Отрицание используется внутри многосимвольных шаблонов. Отрицание относится ко всем символам шаблона.
- [^0-9] Соответствует любому одному НЕ цифровому символу.
- [^abc] Соответствует любому символу, который не a,b или c.
Сложные выборки
- (?:x) - найти соответствие, не являющееся x.
Особенность: (?:x) не помещает свое содержимое в переменную, в отличие от обычных (). $0 будет заменен на всю подстроку, совпавшую с регуляркой.
- (?:ab|cd|ef) - найти соответствие, не являющееся ab, cd, ef;
- x(?=y) - найти x если за ним сразу следует y (и, видимо, поместить в найденную переменную только x)
- x(?!y) - найти x если за ним сразу не следует y
Флаги
Флаг используются как опции или параметры при вызове функций работы с регулярными выражениями.
- g - находить все вхождение, подходящие под шаблон (в противном случае будет находиться только первое вхождение)
- i - игнорировать регистр букв (считать большие и маленькие буквы одинаковыми)
- m - обрабатывать многострочные строки