Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

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

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

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

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

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 вызывается многократно без освобождения областей памяти, ставших ненужными.

Бесплатный конструктор сайтов и Landing Page

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

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

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

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

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

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
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...