Logo Host-telecom.com — профессиональный хостинг в Европе! Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

ATLEX Выделенные серверы: в Европе / в России.

Виртуальные серверы: в Европе / в России.

Партнерская программа

Хостинг + Certum Commercial SSL и домен в подарок

VPS: SSD, KVM, бесплатные бэкапы и администрирование 24/7

Бесплатный перенос сайта + подарки к новоселью

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

REGCMP(3X)

НАЗВАНИЕ
regcmp, regex - компиляция и выполнение регулярного выражения

СИНТАКСИС

	char *regcmp (string1 [, string2, ...], (char *) 0)
	char *string1, *string2, ...;
	
	char *regex (re, subject [, ret0, ...])
	char *re, *subject, *ret0, ...;
	
	extern char *__loc1;

ОПИСАНИЕ
Функция regcmp компилирует регулярное выражение, состоящее из конкатенированных аргументов, и возвращает указатель на результат компиляции. Чтобы захватить пространство для результата, используется функция malloc(3C). Ответственность за освобождение ставшего ненужным пространства, которое было выделено при помощи malloc, возлагается на пользователя. Пустой указатель NULL, возвращенный в качестве результата regcmp, свидетельствует о некорректности аргументов. Чтобы, в общем случае, устранить необходимость вызова данной функции во время выполнения, написана команда regcmp(1).

Функция regex сопоставляет скомпилированный образец с цепочкой символов subject. Regex возвращает пустой указатель NULL в случае неудачи или указатель на символ, следующий после сопоставленного фрагмента, в случае успеха. Если нужно получить больше выходной информации, следует передать дополнительные аргументы. В глобальной переменной __loc1 возвращается указатель на позицию, где сопоставление началось. Функции regcmp и regex почти впрямую заимствованы из редактора ed(1); синтаксис и семантика регулярных выражений изменены незначительно. Ниже перечислены допустимые символы и описана их трактовка.

[ ] * . ^
Эти символы сохраняют свой обычный для ed(1) смысл.

$
Этот символ сопоставляется с концом цепочки символов; \n сопоставляется с символом перевода строки.

-
Минус в квадратных скобках обозначает "от и до". Например, запись [a-z] эквивалентна [abcd...xyz]. Минус может встречаться сам по себе, только если он является первым или последним символом. Например, класс символов [ ]-] сопоставляется с символами ] и -.

+
Плюс, следующий за регулярным выражением, обозначает "один или более раз". Например, запись [0-9]+ эквивалентна [0-9][0-9]*.

{m} {m,} {m, u}
Целые значения, заключенные в фигурные скобки, указывают, сколько раз должно применяться предшествующее регулярное выражение. Минимальное число применений задается величиной m, максимальное величиной u, которая должно быть меньше, чем 256. Если указано только значение {m}, оно обозначает точное число применений регулярного выражения. Запись {m,} эквивалентна {m, бесконечность}. Операции + и * эквивалентны соответственно {1,} и {0,}.

( ... )$n
Значение регулярного выражения в скобках должно быть возвращено. Значение заносится в (n+1)-й аргумент после subject. В текущей версии допускается максимум 10 таких регулярных выражений. Данные присваивания выполняются безусловно.

( ... )
Круглые скобки используются для группировки. Оператор (например, *, +, { }) может работать с одним символом или с регулярным выражением, заключенным в скобки. Например, (a*(cb+)*)$0.

Все определенные выше символы по необходимости трактуются особым образом. Чтобы обозначать самих себя, они должны экранироваться символом \.

ПРИМЕРЫ

  1. В данном примере будет сопоставлен символ перевода строки, стоящий в начале цепочки символов, на которую указывает аргумент cursor:
    	char *cursor, *newcursor, *ptr;
    	  ...
    	newcursor =
    	  regex((ptr = regcmp("^\n", (char *)0)), cursor);
    	free (ptr);
    
  2. В следующем примере будет сопоставлена цепочка символов "Testing3" и возвращен адрес после последнего сопоставленного символа (адрес символа "4"). Цепочка "Testing3" будет скопирована в массив ret0.
    	char ret0 [9];
    	char *newcursor, *name;
    	  ...
    	name  =  regcmp ("([A-Za-z][A-za-z0-9]{0,7})$0",
    	                (char *) 0);
    	newcursor = regex (name, "012Testing345", ret0);
    
  3. Предварительно скомпилированное регулярное выражение из файла file.i [см. regcmp(1)] будет применено к аргументу string:
    	#include "file.i"
    	char *string, *newcursor;
    	   ...
    	newcursor = regex (name, string);
    

ФАЙЛЫ

	/usr/lib/libPW.a        Библиотека, в которой  хранятся
	                        описанные функции.

СМ. ТАКЖЕ
malloc(3C).
ed(1), regcmp(1) в Справочнике пользователя.

СЮРПРИЗЫ
При работе программы пользователя может произойти переполнение памяти, если regcmp вызывается многократно без освобождения областей памяти, ставших ненужными.

💰 Самые низкие цены на домены

🔒 Отличный хостинг на SSD c бесплатными SSL

💻 Огромнейший выбор dedicated выделенных серверов

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Мощные сервера

VPS с гибкой конфигурацией: за 1€

Мощные выделенные сервера: от 25€

Собственный Дата-Центр
Поддержка 24/7

хостинг Украина

Новости мира IT:

Архив новостей

Последние комментарии:

Релиз FreeBSD 11.4 (1)
Пятница 19.06, 07:25

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...