![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
POSIX Compatible C API'sBoost , Boost.Regex 5.1.2 , Reference
|
![]() |
Note |
---|---|
это сокращенная ссылка на функции POSIX API, они предназначены для совместимости с другими библиотеками, а не как API для использования в новом коде (если вам не нужен доступ с языка, отличного от C++). Эта версия этих функций также должна счастливо сосуществовать с другими версиями, поскольку используемые имена являются макросами, которые расширяются до фактических названий функций. |
#include <boost/cregex.hpp>
или:
#include <boost/regex.h>
Следующие функции доступны для пользователей, которым нужна библиотека POSIX, совместимая с C, они доступны как в версиях Unicode, так и в версиях с узкими символами, стандартные имена POSIX API - это макросы, которые расширяются до одной версии или другой в зависимости от того, определен UNICODE или нет.
![]() |
Important |
---|---|
Обратите внимание, что все символы, определенные здесь, при использовании в программах C++ заключены внутри пространства имен< |
Функции определяются как:
extern "C" { struct regex_tA; struct regex_tW; int regcompA(regex_tA*, const char*, int); unsigned int regerrorA(int, const regex_tA*, char*, unsigned int); int regexecA(const regex_tA*, const char*, unsigned int, regmatch_t*, int); void regfreeA(regex_tA*); int regcompW(regex_tW*, const wchar_t*, int); unsigned int regerrorW(int, const regex_tW*, wchar_t*, unsigned int); int regexecW(const regex_tW*, const wchar_t*, unsigned int, regmatch_t*, int); void regfreeW(regex_tW*); #ifdef UNICODE #define regcomp regcompW #define regerror regerrorW #define regexec regexecW #define regfree regfreeW #define regex_t regex_tW #else #define regcomp regcompA #define regerror regerrorA #define regexec regexecA #define regfree regfreeA #define regex_t regex_tA #endif }
Все функции работают на структуре regex_t, которая выявляет двух публичных членов:
член |
значение |
---|---|
< |
Это заполнено< |
< |
Указывает на конец выражения для компиляции, когда установлен флаг REG_PEND. |
![]() |
Note |
---|---|
< |
<regcomp
>берет указатель на<regex_t
>, указатель на выражение для компиляции и параметр флагов, который может быть комбинацией:
Флаг |
значение |
---|---|
REG_EXTENDED |
Составляет современные регулярные выражения. Это эквивалентно< |
REG_BASIC |
Составляет основной (устаревший) синтаксис регулярного выражения. Это эквивалентно< |
REG_NOSPEC |
Все символы обычны, выражение — буквальная строка. |
REG_ICASE |
Компиляции для сопоставления, которые игнорируют случай персонажа. |
REG_NOSUB |
В этой библиотеке нет никакого эффекта. |
REG_NEWLINE |
Когда этот флаг установлен, точка не соответствует персонажу новой линии. |
REG_PEND |
Когда этот флаг установлен, параметр re_endp структуры regex_t должен указывать на конец обычного выражения для компиляции. |
REG_NOCOLLATE |
Когда этот флаг установлен, то локально-зависимое сопоставление для диапазонов символов выключается. |
REG_ESCAPE_IN_LISTS |
Когда этот флаг установлен, то последовательности выхода разрешены в выражениях скобок (множества символов). |
REG_NEWLINE_ALT |
Когда этот флаг установлен, символ новой линии эквивалентен оператору чередования . |
REG_PERL |
Составляет Perl как регулярные выражения. |
REG_AWK |
Ярлык для аук-подобного поведения:< |
REG_GREP |
Ярлык для грубого поведения:< |
REG_EGREP |
Короткий путь для эгрепа, как поведение:< |
Regerror принимает следующие параметры, он отображает код ошибки в читаемую строку человека:
Параметр |
значение |
---|---|
Инт код |
Код ошибки. |
const regex_t* e |
Регулярное выражение (может быть нулевым). |
Шар* Буф |
Буфер для заполнения сообщения об ошибке. |
unsigned int buf_size |
Длина буфа. |
Если код ошибки OR'ed с REG_ITOA, то сообщение, которое приводит к результату, является напечатанным именем кода, а не сообщением, например "REG_BADPAT". Если код REG_ATIO, то e не должен быть нулевым, а e->re_pend должен указывать на печатаемое имя кода ошибки, то значение возврата - это значение кода ошибки. Для любого другого значения кода значение возврата - это количество символов в сообщении об ошибке, если значение возврата больше или равно размеру buf_size, то повторная регистрация должна быть вызвана снова с большим буфером.
regexec находит первое появление выражения e в строке buf. Если len не равен нулю, то*mзаполняется тем, что соответствует обычному выражению, m<boost
>содержит то, что соответствует всей строке, m<#include<boost/regex.h>
>первое подвыражение и т.д., см. regmatch_t в объявлении файла заголовка для более подробной информации. Параметр eflags может быть комбинацией:
Флаг |
значение |
---|---|
REG_NOTBOL |
Параметр буф не обозначает начало строки. |
REG_NOTEOL |
Параметр buf не заканчивается в конце строки. |
REG_STARTEND |
Поиск по строке начинается с buf + pmatch< |
<regfree
>освобождает всю память, которая была выделена regcomp.
Статья POSIX Compatible C API's раздела Boost.Regex 5.1.2 Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |