https://github.com/k-takata/Onigmo
Onigmo — это библиотека регулярных выражений, созданная на основе Oniguruma. Он ориентирован на поддержку новых выражений, таких как K
, R
, (?(cond)yes|no)
и т. д., которые поддерживаются в Perl 5.10+.
Поскольку Onigmo используется в качестве библиотеки регулярных выражений по умолчанию в Ruby 2.0 или новее, многие патчи перенесены из Ruby 2.x.
См. также страницу Wiki: https://github.com/k-takata/Onigmo/wiki.
Лицензия БСД.
./autogen.sh
(если configure
не существует.)./configure
make
make install
тест
сделать тест
удалить
сделать удаление
проверка конфигурации
onigmo-config --cflags onigmo-config --libs onigmo-config --prefix onigmo-config --exec-prefix
Выполните build_nmake.cmd
. build_x64
или build_x86
будут использоваться в качестве рабочего/выходного каталога.
onigmo_s.lib: static link library
onigmo.lib: import library for dynamic link
onigmo.dll: dynamic link library
тест (ASCII/Shift_JIS/EUC-JP/Юникод)
Выполните build_nmake.cmd test
. Для запуска тестов нужен Python (такой же разрядности, как Onigmo).
Выполните mingw32-make -f win32/Makefile.mingw
. build_x86-64
, build_i686
и т. д. будут использоваться в качестве рабочего/выходного каталога.
libonigmo.a: static link library
libonigmo.dll.a: import library for dynamic link
onigmo.dll: dynamic link library
тест (ASCII/Shift_JIS/EUC-JP/Юникод)
Выполните mingw32-make -f win32/Makefile.mingw test
. Для запуска тестов нужен Python (такой же разрядности, как Onigmo).
Если вы используете MinGW в MSYS2, вы также можете использовать ./configure
и make
как Unix. В этом случае имя DLL будет иметь номер версии API. Например:
libonigmo-6.dll
См. doc/RE или doc/RE.ja для японского языка.
Включите onigmo.h в свою программу. (Onigmo API) См. документацию/API для получения информации об API Onigmo.
Если вы хотите отключить определение типа UChar
(== unsigned char
) в onigmo.h, определите ONIG_ESCAPE_UCHAR_COLLISION
, а затем включите onigmo.h.
Если вы хотите отключить определение типа regex_t
в onigmo.h, определите ONIG_ESCAPE_REGEX_T_COLLISION
, а затем включите onigmo.h.
Пример командной строки компиляции/связывания в Unix или Cygwin (префикс == /usr/local Case)
cc sample.c -L/usr/local/lib -lonigmo
Если вы хотите использовать статическую библиотеку ссылок (onigmo_s.lib) в Win32, добавьте опцию -DONIG_EXTERN=extern
в компилятор C.
Файл | Описание |
---|---|
образец/простой.c | пример минимума (Onigmo API) |
образец/names.c | пример обратного вызова именованной группы. |
образец/encode.c | пример некоторых кодировок. |
образец/listcap.c | пример истории захвата. |
образец/posix.c | Пример POSIX API. |
образец/sql.c | пример переменных метасимволов. |
Тестовые программы
Файл | Описание |
---|---|
образец/syntax.c | Проверка синтаксиса Perl, Java и ASIS. |
образец/crnl.c | CRNL-тест |
Файл | Описание |
---|---|
онигмо.ч | Файл заголовка API Onigmo (общедоступный) |
онигмо-config.in | шаблон программы проверки конфигурации |
онигмо.py | Модуль Онигмо для Python |
regenc.h | заголовочный файл платформы кодировок символов |
regint.h | внутренние определения |
regparse.h | внутренние определения для regparse.c и regcomp.c |
regcomp.c | функции компиляции и оптимизации |
regenc.c | система кодировок символов |
regerror.c | функция сообщения об ошибке |
regext.c | расширенные функции API (API делюкс-версии) |
regexec.c | функции поиска и сопоставления |
regparse.c | функции разбора. |
regsyntax.c | функции синтаксиса шаблонов и встроенное определение синтаксиса |
regtrav.c | функции обхода данных дерева истории захвата |
regversion.c | функция информации о версии |
ул.ч | Заголовочный файл функций хеш-таблицы |
ст.ц | функции хэш-таблицы |
onigmognu.h | Файл заголовка API регулярных выражений GNU (общедоступный) |
reggnu.c | Функции API регулярных выражений GNU |
onigmoposix.h | Файл заголовка POSIX API (общедоступный) |
regposerr.c | Функция сообщения об ошибке POSIX |
regposix.c | Функции POSIX API |
enc/mktable.c | генератор таблицы типов символов |
энк/ascii.c | Кодировка ASCII-8BIT |
энк/джис/ | Данные свойств JIS |
enc/euc_jp.c | Кодировка EUC-JP |
enc/euc_tw.c | Кодировка EUC-TW |
enc/euc_kr.c | Кодировка EUC-KR, EUC-CN |
enc/shift_jis.c | Кодировка Shift_JIS |
enc/shift_jis.h | Общая часть кодировки Shift_JIS и Windows-31J. |
энк/windows_31j.c | Кодировка Windows-31J (CP932) |
энк/big5.c | Кодировка Big5 |
энк/gb18030.c | Кодировка GB18030 |
enc/gbk.c | Кодировка GBK |
enc/koi8_r.c | Кодировка КОИ8-Р |
enc/koi8_u.c | Кодировка КОИ8-У |
энк/iso_8859.h | общее определение кодировки ISO-8859 |
энк/iso_8859_1.c | ISO-8859-1 (латиница-1) |
энк/iso_8859_2.c | ISO-8859-2 (латиница-2) |
энк/iso_8859_3.c | ISO-8859-3 (латиница-3) |
энк/iso_8859_4.c | ISO-8859-4 (латиница-4) |
энк/iso_8859_5.c | ISO-8859-5 (кириллица) |
энк/iso_8859_6.c | ISO-8859-6 (арабский) |
энк/iso_8859_7.c | ISO-8859-7 (греческий) |
энк/iso_8859_8.c | ISO-8859-8 (иврит) |
энк/iso_8859_9.c | ISO-8859-9 (латиница-5 или турецкий) |
энк/iso_8859_10.c | ISO-8859-10 (Latin-6 или Nordic) |
энк/iso_8859_11.c | ISO-8859-11 (тайский) |
энк/iso_8859_13.c | ISO-8859-13 (Latin-7 или Балтийский регион) |
энк/iso_8859_14.c | ISO-8859-14 (латиница-8 или кельтская) |
энк/iso_8859_15.c | ISO-8859-15 (латиница-9 или западноевропейская с евро) |
энк/iso_8859_16.c | ISO-8859-16 (латиница-10) |
энк/utf_8.c | Кодировка UTF-8 |
энк/utf_16be.c | Кодировка UTF-16BE |
энк/utf_16le.c | Кодировка UTF-16LE |
энк/utf_32be.c | Кодировка UTF-32BE |
энк/utf_32le.c | Кодировка UTF-32LE |
энк/unicode.c | общие коды кодировки Unicode |
код/Юникод/ | Данные о сворачивании регистра Юникода и данные о свойствах |
энк/windows_1250.c | Кодировка Windows-1250 (CP1250) (Центральная/Восточная Европа) |
энк/windows_1251.c | Кодировка Windows-1251 (CP1251) (кириллица) |
энк/windows_1252.c | Кодировка Windows-1252 (CP1252) (латиница) |
энк/windows_1253.c | Кодировка Windows-1253 (CP1253) (греческий) |
энк/windows_1254.c | Кодировка Windows-1254 (CP1254) (турецкий) |
энк/windows_1257.c | Кодировка Windows-1257 (CP1257) (Балтийский регион) |
энк/cp949.c | Кодировка CP949 (используется только в Ruby) |
enc/emacs_mule.c | Внутренняя кодировка Emacs (используется только в Ruby) |
энк/gb2312.c | Кодировка GB2312 (используется только в Ruby) |
enc/us_ascii.c | Кодировка US-ASCII (используется только в Ruby) |
win32/Makefile | Makefile для Win32 (VC++) |
win32/Makefile.mingw | Makefile для Win32 (MinGW) |
win32/config.h | config.h для Win32 |
win32/onigmo.rc | файл ресурсов для Win32 |