Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

POSIX Compatible C API's

Boost , Boost.Regex 5.1.2 , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
[Note] Note

это сокращенная ссылка на функции POSIX API, они предназначены для совместимости с другими библиотеками, а не как API для использования в новом коде (если вам не нужен доступ с языка, отличного от C++). Эта версия этих функций также должна счастливо сосуществовать с другими версиями, поскольку используемые имена являются макросами, которые расширяются до фактических названий функций.

#include <boost/cregex.hpp>

или:

#include <boost/regex.h>

Следующие функции доступны для пользователей, которым нужна библиотека POSIX, совместимая с C, они доступны как в версиях Unicode, так и в версиях с узкими символами, стандартные имена POSIX API - это макросы, которые расширяются до одной версии или другой в зависимости от того, определен UNICODE или нет.

[Important] Important

Обратите внимание, что все символы, определенные здесь, при использовании в программах C++ заключены внутри пространства имен<boost>, если вы не используете вместо этого<#include<boost/regex.h>>- в этом случае символы все еще определены в пространстве имен, но также доступны в глобальном пространстве имен.

Функции определяются как:

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, которая выявляет двух публичных членов:

член

значение

<unsignedint re_nsub>

Это заполнено<regcomp>и указывает на количество подвыражений, содержащихся в обычном выражении.

<constTCHAR*re_endp>

Указывает на конец выражения для компиляции, когда установлен флаг REG_PEND.

[Note] Note

<regex_t>на самом деле является<#define>- это либо<regex_tA>или<regex_tW>в зависимости от того, определено<UNICODE>или нет,<TCHAR>или<char>или<wchar_t>снова в зависимости от макроса<UNICODE>.

regcomp

<regcomp>берет указатель на<regex_t>, указатель на выражение для компиляции и параметр флагов, который может быть комбинацией:

Флаг

значение

REG_EXTENDED

Составляет современные регулярные выражения. Это эквивалентно<regbase::char_classes| regbase::intervals| regbase::bk_refs>

.

REG_BASIC

Составляет основной (устаревший) синтаксис регулярного выражения. Это эквивалентно<regbase::char_classes| regbase::intervals| regbase::limited_ops| regbase::bk_braces| regbase::bk_parens| regbase::bk_refs>

.

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_EXTENDED |REG_ESCAPE_IN_LISTS>

REG_GREP

Ярлык для грубого поведения:<REG_BASIC |REG_NEWLINE_ALT>

REG_EGREP

Короткий путь для эгрепа, как поведение:<REG_EXTENDED |REG_NEWLINE_ALT>

regerror

Regerror принимает следующие параметры, он отображает код ошибки в читаемую строку человека:

Параметр

значение

Инт код

Код ошибки.

const regex_t* e

Регулярное выражение (может быть нулевым).

Шар* Буф

Буфер для заполнения сообщения об ошибке.

unsigned int buf_size

Длина буфа.

Если код ошибки OR'ed с REG_ITOA, то сообщение, которое приводит к результату, является напечатанным именем кода, а не сообщением, например "REG_BADPAT". Если код REG_ATIO, то e не должен быть нулевым, а e->re_pend должен указывать на печатаемое имя кода ошибки, то значение возврата - это значение кода ошибки. Для любого другого значения кода значение возврата - это количество символов в сообщении об ошибке, если значение возврата больше или равно размеру buf_size, то повторная регистрация должна быть вызвана снова с большим буфером.

regexec

regexec находит первое появление выражения e в строке buf. Если len не равен нулю, то*mзаполняется тем, что соответствует обычному выражению, m<boost>содержит то, что соответствует всей строке, m<#include<boost/regex.h>>первое подвыражение и т.д., см. regmatch_t в объявлении файла заголовка для более подробной информации. Параметр eflags может быть комбинацией:

Флаг

значение

REG_NOTBOL

Параметр буф не обозначает начало строки.

REG_NOTEOL

Параметр buf не заканчивается в конце строки.

REG_STARTEND

Поиск по строке начинается с buf + pmatch<boost>.rm_so и заканчивается на buf + pmatch<boost>.rm_eo.

regfree

<regfree>освобождает всю память, которая была выделена regcomp.


PrevUpHomeNext

Статья POSIX Compatible C API's раздела Boost.Regex 5.1.2 Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:16:25/0.027236938476562/1