API поисковой машины: синтаксис регулярных выражений в запросах

Литералы

Метасимвол точка "."

Повторы

Альтернативы

Множества символов

Так как в Проекте используется разборщик регулярных выражений из библиотеки BOOST, то здесь приводится краткий (ряд элементов не описан) перевод описания синтаксиса из документации Boost.regex. Оригинал можно прочитать здесь.

Литералы

Литералами являются любые символы, исключая: ".", "|", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^", "$" и "\". Эти символы становятся литералами в том случае, когда перед ними стоит символ "\". Литерал - это символ, который соответствует самому себе.

Метасимвол точка "."

Точка является метасимволом и соответствует любому символу (или отсутствию символа). Таким образом, строка "abc.ef" соответствует и "abcef", и "abcdef".

Повторы

Это выражения, которые повторяются некоторое количество раз в тексте. Для задания повторов применяются символы:

Звездочка * повторение любое число раз, включая 0.

Плюс + повторение любое число раз, но не менее 1.

Вопрос ? повтор 0 или 1 раз.

Фигурные скобки {n,m} повтор не менее n и не более m раз.

Примеры:

"ba*" соответствует "b", "ba", "baa" и так далее.

"ba+" соответствует "ba", "baa" и так далее.

"ba?" соответствует "b" или "ba".

"ba{2,4}" соответствует "baa", "baaa" или "baaaa".

Альтернативы

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

Пример:

"a(b|c)" соответствует "ab" или "ac"

"abc|def" соответствует "abc" или "def"

Множества символов

Это группы символов, которые соответствуют любому одиночному символу, который принадлежит множеству. Множества ограничиваются символами [ и ] и содержат литералы или диапазоны символов. Символ "^" сразу после [ образует дополнение множества (то есть любые символы не из множества).

Примеры:

"[abc]" соответствует "a", либо "b", либо "c".

"[^abc]" соответствует любому символу, кроме "a", "b" и "c".

"[a-z]" соответствует символам из диапазона от "a" до "z".

"[^A-Z]" соответствует любым символам, кроме входящих в диапазон от "A" до "Z".

Есть предопределенные множества символов, на которые ссылаются особым образом:

[:alnum:] - буквы и цифры

[:alpha:] - буквы

[:blank:] - пробельные символы (сам пробел или символ табуляции).

[:digit:] - цифры

[:lower:] - буквы в нижнем регистре

[:punct:] - пунктуатор

[:space:] - невидимые символы

[:upper:] - буквы в верхнем регистре

[:xdigit:] - шестнадцатеричный символ (0-9,A,B,C,D,E,F).

[:word:] - все буквы, цифры и символ подчеркивания.

Для удобства можно использовать сокращения для множеств:

\w вместо [[:word:]]

\s вместо [[:space:]]

\d вместо [[:digit:]]

\l вместо [[:lower:]]

\u вместо [[:upper:]] 

\W вместо [^[:word:]]

\S вместо [^[:space:]]

\D вместо [^[:digit:]]

\L вместо [^[:lower:]]

\U вместо [^[:upper:]]

 

  © Mental Computing 2010
изменено 16-Aug-11