Использование квадратных скобок в регулярных выражениях

Чтобы выполнить поиск одного символа из последовательности, используйте [квадратные скобки]:

[ab] находит либо символ a, либо символ b, как минимум один раз в тексте.

[ab] находит *a*hoy

[ab] также находит *b*oy

[ab] находит текст about два раза (*a*bout и a*b*out).

Использование квадратных скобок также позволяет вам выполнить поиск диапазона символов, используя символ "-":

Для того, чтобы найти все алфавитные символы нижнего регистра от a до z, можно использовать выражение [a-z]:

  • Выражение [a-z] находит текст a*123*b дважды, один раз в позиции a, второй - в позиции b.

Таким же образом, поиск всех символов в верхнем регистре выполняется с помощью выражения [A-Z]:

  • Выражение [A-Z] не находит текст a123b, но находит *A*123b один раз на символе A.

Так же, как и одиночные символы, можно использовать несколько диапазонов вместе в одних и тех же квадратных скобках:

Выражение [a-zA-Z] находит любые символы верхнего или нижнего регистра.

Обратите внимание, что выражение [a-zA-Z] эквивалентно [A-Za-z].

Диапазон [0-9] находит любые цифровые символы.

Регулярное выражение [a-zA-Z0-9] позволяет найти все буквы независимо от регистра, а также цифры.

Поиск в последнем примере обычно называют алфавитно-цифровым поиском.

Если вы хотите найти сам символ "-" в квадратных скобках, то он должен быть первым в квадратных скобках.

Выражение [-a-z] находит символ "-" или любой символ нижнего регистра.

Символ ^ (символ каретки, расположенный на клавиатуре над клавишей 6) означает отрицание. При использовании в квадратных скобках символ ^ означает поиск совпадения с любыми элементами, кроме тех, которые указаны в квадратных скобках.

[^A] находит все элементы, кроме A верхнего регистра

[^Aa] находит любые элементы, кроме A или a.

Выражение [^0-9] находит любой символ, не являющийся цифрой (0123456789).

Символ ^ должен быть первым в скобках.

Будьте внимательны, когда используете пробелы внутри квадратных скобок. Пробелы также являются символами. [0-9] без пробелов не равно [0 - 9], которое включает пробелы после 0 и перед 9.

Регулярное выражение может включать одиночные символы, за которыми сразу следуют квадратные скобки.

a[0-9] находит любой текст, содержащий символ a, после которого идет любая цифра (например,a0, a2, a9, но не ab1, не aA1 и не a 1)

Клавиши быстрого доступа для регулярных выражений с квадратными скобками

Синтаксис регулярных выражений POSIX также имеет некоторые встроенные клавиши быстрого доступа для указания некоторых часто используемых классов регулярных выражений.

  • [:digit:] находит цифры от 0 до 9

  • [:alnum:] находит любые алфавитно-цифровые символы от 0 до 9 ИЛИ от A до Z или от a z.

  • [:alpha:] находит любые алфавитные символы от A до Z или от a z.

  • [:blank:] находит символы пробелов и табуляции.

  • [:xdigit:] находит шестнадцатеричное представление чисел, например 0123424AB.

  • [:punct:] находит пунктуационные значки, например . , " ' ? ! ; : # $ % & ( ) * + - / < > = @ [ ] \ ^ _ { } | ~

  • [:print:] находит любые отображаемые знаки.

  • [:space:] находит любые символы пробелов (пробел, табуляция, новая строка, прогон страницы, вертикальная табуляции, возврат каретки).

  • [:graph:] находит любые графические символы кроме пробелов (SPACE, TAB).

  • [:upper:] находит любые алфавитные символы от A до Z в верхнем регистре.

  • [:lower:] находит any любые алфавитные символы от a to z в верхнем регистре.

  • [:cntrl:] находит символы управления, например новая строка, возврат каретки, табуляция и так далее.

Регулярное выражение [:digit:] равно [0-9].

Обратите внимание, что можно вставлять клавиши быстрого доступа в другие квадратные скобки:

[a-d[:digit:]] находит любые из следующих символов: abcd0123456789.