GoGPT Best VPN GoSearch

Значок OnWorks

pcre2test - Интернет в облаке

Запустите pcre2test в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда pcre2test, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


pcre2test - программа для тестирования Perl-совместимых регулярных выражений.

СИНТАКСИС



pcre2test [опции] [Вход файл [выход файл]]

pcre2test это тестовая программа для библиотек регулярных выражений PCRE2, но она также может быть
используется для экспериментов с регулярными выражениями. В этом документе описаны особенности
программа испытаний; подробнее о самих регулярных выражениях см. pcre2pattern
документация. Подробнее о вызовах функций библиотеки PCRE2 и их параметрах см.
pcre2api документация.

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

По мере развития исходной довольно простой библиотеки PCRE она приобрела множество различных функций,
и в результате оригинал конкретный программа оказалась с множеством опций в беспорядочной,
непонятный синтаксис для тестирования всех функций. Переход на новый API PCRE2 обеспечил
возможность повторно реализовать программу испытаний как pcre2test, с более чистым синтаксисом модификатора.
Тем не менее, есть еще много малоизвестных модификаторов, некоторые из которых специально
разработан для использования вместе с тестовым скриптом и файлами данных, которые распространяются
как часть PCRE2. Все модификаторы задокументированы здесь, некоторые без особого обоснования,
но многие из них вряд ли пригодятся, кроме как при тестировании библиотек.

PCRE2's 8-БИТ, 16-BIT И 32-BIT БИБЛИОТЕКИ



Различные версии библиотеки PCRE2 могут быть построены для поддержки символьных строк, которые
закодированы в 8-битных, 16-битных или 32-битных кодовых единицах. Одна, две или все три из этих библиотек
могут быть установлены одновременно. В pcre2test программу можно использовать для проверки всех
библиотеки. Однако его собственный ввод и вывод всегда в 8-битном формате. При тестировании
16-битные или 32-битные библиотеки, шаблоны и тематические строки преобразуются в 16- или 32-битные.
формат перед передачей в библиотечные функции. Результаты конвертируются обратно в 8-битные
кодовые единицы для вывода.

В остальной части этого документа имена библиотечных функций и структур приведены в
родовая форма, например, pcre_compile (). Фактические имена, используемые в библиотеках, имеют
суффикс _8, _16 или _32, в зависимости от ситуации.

ВХОД КОДИРОВАНИЕ



Вход в pcre2test обрабатывается построчно, либо путем вызова библиотеки C fgets ()
функцию или через Либредлайн библиотека (см. ниже). Вход обрабатывается с использованием
Строковые функции языка C, поэтому не должны содержать двоичных нулей, даже если в Unix-подобных
среды, fgets () обрабатывает любые байты, кроме новой строки, как символы данных. В некоторых
Символ 26 среды Windows (шестнадцатеричный 1A) вызывает немедленный конец файла и не более
данные читаются.

Поэтому для максимальной переносимости безопаснее избегать непечатаемых символов в
pcre2test входные файлы. Существует возможность указать символы шаблона как
шестнадцатеричные пары, что позволяет включать двоичные нули в шаблон для
в целях тестирования. Строки темы обрабатываются для экранирования обратной косой черты, что делает ее
можно включить любое значение данных.

КОМАНДА ЛИНИЯ ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ



-8 Если 8-битная библиотека была собрана, эта опция заставляет ее использовать (это
по умолчанию). Если 8-битная библиотека не была создана, эта опция вызывает
ошибка.

-16 Если была создана 16-битная библиотека, эта опция заставляет ее использовать. Если только
создана 16-битная библиотека, это значение по умолчанию. Если 16-битная библиотека
не был построен, эта опция вызывает ошибку.

-32 Если была создана 32-битная библиотека, эта опция заставляет ее использовать. Если только
создана 32-битная библиотека, это значение по умолчанию. Если 32-битная библиотека
не был построен, эта опция вызывает ошибку.

-b Ведите себя так, как будто каждый узор имеет / fullbincode модификатор; полный внутренний
бинарная форма паттерна выводится после компиляции.

-C Выведите номер версии библиотеки PCRE2 и всю доступную информацию.
о включенных дополнительных функциях, а затем выйдите с нулевым выходом
код. Все остальные варианты игнорируются.

-C вариант Выведите информацию о конкретной опции времени сборки, затем выйдите. Этот
функциональность предназначена для использования в скриптах, таких как Выполнить тест, Следующие
options выводят значение и устанавливают код выхода, как указано:

ebcdic-nl код для LF (= NL) в среде EBCDIC:
0x15 или 0x25
0 при использовании в среде ASCII
код выхода всегда 0
linksize настроенный размер внутренней ссылки (2, 3 или 4)
код выхода установлен на размер ссылки
newline настройка новой строки по умолчанию:
CR, LF, CRLF, ANYCRLF или ЛЮБОЙ
код выхода всегда 0
bsr - настройка по умолчанию для того, что соответствует \ R:
ANYCRLF или ЛЮБОЙ
код выхода всегда 0

Следующие параметры выводят 1 для истины или 0 для ложи и устанавливают код выхода на
то же значение:

обратная косая черта-C \ C поддерживается (не заблокирована)
ebcdic скомпилирован для среды EBCDIC
доступна своевременная поддержка jit
pcre2-16 была построена 16-битная библиотека
pcre2-32 была построена 32-битная библиотека
pcre2-8 была построена 8-битная библиотека
Unicode поддержка Unicode доступна

Если задана неизвестная опция, выводится сообщение об ошибке; код выхода - 0.

-d Ведите себя так, как будто каждый узор имеет отлаживать модификатор; внутренняя форма и
информация о скомпилированном шаблоне выводится после компиляции; -d is
что эквивалентно -b -i.

-дфа Ведите себя так, как будто в каждой строке темы есть DFA модификатор; сопоставление выполняется с помощью
pcre2_dfa_match () функция вместо значения по умолчанию pcre2_match ().

-Помощь Выведите краткое описание этих параметров и затем выйдите.

-i Ведите себя так, как будто каждый узор имеет /Информация модификатор; информация о собранных
шаблон выдается после компиляции.

-джит Ведите себя так, как будто каждая линия рисунка JIT модификатор; после успешного
компиляции, каждый шаблон передается оперативному компилятору, если он доступен.

-шаблон список модификаторов
Ведите себя так, как будто каждая строка шаблона содержит заданные модификаторы.

-q Не выводить номер версии pcre2test в начале исполнения.

-S размер В Unix-подобных системах установите размер стека времени выполнения равным размер мегабайты.

-тема список модификаторов
Ведите себя так, как будто каждая строка темы содержит указанные модификаторы.

-t Запустите каждую компиляцию и сравните много раз с таймером, и выведите результат
раз за компиляцию или совпадение. При использовании JIT для
начальная компиляция и JIT-компиляция. Вы можете контролировать количество итераций
которые используются для определения времени, следуя -t с номером (отдельным пунктом на
командная строка). Например, «-t 1000» повторяется 1000 раз. По умолчанию
повторить 500,000 XNUMX раз.

-tm Это похоже на -t за исключением того, что он учитывает только фазу сопоставления, а не компиляцию
фаза.

-T -ТМ Они ведут себя как -t и -tm, но, кроме того, в конце цикла общая
время для всех компиляций и совпадений выводится.

-версия Выведите номер версии PCRE2 и выйдите.

ОПИСАНИЕ



If pcre2test дается два аргумента имени файла, он читает с первого и записывает в
второй. Если первое имя «-», ввод берется из стандартного ввода. Если pcre2test is
учитывая только один аргумент, он читает из этого файла и записывает в стандартный вывод. В противном случае он читается как
из стандартного ввода и записывает в стандартный вывод.

После появления pcre2test построен, параметр конфигурации может указать, что он должен быть связан с
Либредлайн or либедит библиотека. Когда это будет сделано, если вход поступает с терминала, он
читается с использованием readline () функция. Это обеспечивает возможности редактирования строк и истории.
Выход из -Помощь опция указывает, действительно ли readline () будет использоваться.

Программа обрабатывает любое количество тестов, каждый из которых состоит из набора входных строк.
Каждый набор начинается с шаблона регулярного выражения, за которым следует любое количество строк темы.
быть сопоставленным с этим шаблоном. Между наборами тестовых данных командные строки, которые начинаются
с # может появиться. Этот формат файла с некоторыми ограничениями также может обрабатываться
perltest.sh сценарий, который распространяется с PCRE2 как средство проверки того, что
поведение PCRE2 и Perl одинаково.

Когда вход является терминалом, pcre2test запрашивает каждую строку ввода, используя "re>" для
запрашивать шаблоны регулярных выражений и «данные>», чтобы запрашивать строки темы. Командование
строки, начинающиеся с символа #, могут быть введены только в ответ на запрос "re>".

Каждая строка темы сопоставляется отдельно и независимо. Если вы хотите сделать многострочную
совпадений, вы должны использовать escape-последовательность \ n (или \ r или \ r \ n и т. д., в зависимости от
параметр новой строки) в одной строке ввода для кодирования последовательностей новой строки. Здесь нет
ограничение на длину строк темы; входной буфер автоматически расширяется, если он
слишком маленький. Есть функции репликации, которые позволяют создавать длинные
повторяющийся шаблон или строки темы без явного их указания.

Пустая строка или конец файла сигнализируют об окончании строк темы для теста, в
в какой момент ожидается новый шаблон или командная строка, если еще есть ввод для чтения.

КОМАНДА ЛИНИИ



Между наборами тестовых данных строка, начинающаяся с символа #, интерпретируется как командная строка.
Если за первым символом следует пробел или восклицательный знак, строка будет
рассматривается как комментарий и игнорируется. В противном случае распознаются следующие команды:

#запретить_utf

Последующие шаблоны автоматически имеют параметры PCRE2_NEVER_UTF и PCRE2_NEVER_UCP.
set, который блокирует использование параметров PCRE2_UTF и PCRE2_UCP и использование (* UTF)
и (* UCP) в начале шаблонов. Эта команда также вызывает ошибку, если последующий
шаблон содержит любые вхождения \ P, \ p или \ X, которые все еще поддерживаются, когда
PCRE2_UTF не установлен, но для этого требуется, чтобы поддержка свойств Unicode была включена в
библиотека.

Это триггер, который используется в тестовых файлах, чтобы гарантировать, что свойство UTF или Unicode
тесты не случайно добавляются к файлам, которые используются, когда поддержка Unicode не поддерживается.
включены в библиотеку. Установка PCRE2_NEVER_UTF и PCRE2_NEVER_UCP по умолчанию также может
быть полученным с помощью #шаблон; разница в том, что #запретить_utf не может быть сброшен,
и автоматические параметры не отображаются в информации о шаблоне, чтобы не загромождать
тестовый вывод.

#нагрузка

Эта команда используется для загрузки набора предварительно скомпилированных шаблонов из файла, как описано в
раздел «Сохранение и восстановление скомпилированных шаблонов» ниже.

#newline_default [ ]

При построении PCRE2 можно указать соглашение о новой строке по умолчанию. Это определяет, какие
символы и / или пары символов распознаются как указывающие на новую строку в шаблоне или
строка темы. Значение по умолчанию можно изменить при компиляции шаблона. Стандарт
тестовые файлы содержат тесты различных соглашений о новой строке, но большинство тестов
ожидать, что одиночный перевод строки будет распознаваться как новая строка по умолчанию. Без особых действий
тесты не пройдут, если PCRE2 скомпилирован с CR или CRLF в качестве новой строки по умолчанию.

Команда #newline_default указывает список типов новой строки, которые допустимы в качестве
дефолт. Типы должны быть одним из CR, LF, CRLF, ANYCRLF или ANY (в верхнем или нижнем регистре),
например:

#newline_default LF Любой anyCRLF

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

Когда POSIX API тестируется, нет возможности переопределить новую строку по умолчанию.
соглашение, хотя можно установить соглашение о новой строке внутри шаблона. А
предупреждение дается, если POSIX модификатор используется, когда #новаястрока_по умолчанию установил бы значение по умолчанию
для API, отличного от POSIX.

#шаблон

Эта команда устанавливает список модификаторов по умолчанию, который применяется ко всем последующим шаблонам.
Эти настройки можно изменить с помощью модификаторов рисунка.

#перлтест

Появление этой строки приводит к тому, что все последующие настройки модификатора проверяются на наличие
совместимость с perltest.sh скрипт, который используется для подтверждения того, что Perl дает
те же результаты, что и PCRE2. Кроме того, кроме строк комментариев, ни одна из других командных строк не
разрешено, потому что они и многие из модификаторов относятся к pcre2test, и должен
не использоваться в тестовых файлах, которые также обрабатываются perltest.sh, #перлтест команду
помогает обнаруживать тесты, которые случайно помещены не в тот файл.

#pop [ ]

Эта команда используется для управления стеком скомпилированных шаблонов, как описано в
раздел под названием «Сохранение и восстановление скомпилированных шаблонов» ниже.

#спасти

Эта команда используется для сохранения набора скомпилированных шаблонов в файл, как описано в
раздел под названием «Сохранение и восстановление скомпилированных шаблонов» ниже.

#предмет

Эта команда устанавливает список модификаторов по умолчанию, который применяется ко всем последующим строкам темы.
Эти настройки можно изменить с помощью модификаторов в строке темы.

ИЗМЕНЕНИЕ СИНТАКСИС



Списки модификаторов используются как для шаблонов, так и для строк темы. Элементы в списке разделены
запятыми, за которыми следует необязательный пробел. Завершающий пробел в списке модификаторов:
игнорируется. Некоторые модификаторы могут быть указаны как для шаблонов, так и для строк темы, в то время как другие
действительны только для одного или другого. У каждого модификатора длинное имя, например
"закреплен", и некоторые из них должны сопровождаться знаком равенства и значением, например,
«смещение = 12». Значения не могут содержать запятые, но могут содержать пробелы. Модификаторы
которые не принимают значений, может иметь перед знаком минус, чтобы отключить предыдущую настройку.

Некоторые из наиболее распространенных модификаторов также могут быть указаны как отдельные буквы, например
"i" для "без футляра". В документации, следуя соглашению Perl, они написаны
с косой чертой («модификатор / i») для ясности. Все сокращенные модификаторы должны быть
объединены в первый элемент списка модификаторов. Если первый элемент не распознается как
длинное имя модификатора, оно интерпретируется как последовательность этих сокращений. Например:

/ abc / ig, новая строка = cr, jit = 3

Это строка шаблона, список модификаторов которой начинается с двух однобуквенных модификаторов (/ i и
/г). Сокращенные модификаторы в нижнем регистре такие же, как и в Perl.

ШАБЛОН СИНТАКСИС



Строка шаблона должна начинаться с одного из следующих символов (общие символы, за исключением
мета-символы шаблона):

/! "'` - = _:;,% & @ ~

Это интерпретируется как разделитель шаблона. Регулярное выражение может быть продолжено
несколько строк ввода, и в этом случае в него включаются символы новой строки. это
можно включить разделитель в шаблон, экранировав его обратной косой чертой, для
пример

/ abc \ / def /

Если вы сделаете это, escape и разделитель образуют часть шаблона, но поскольку
все разделители не являются буквенно-цифровыми, это не влияет на его интерпретацию. Если
за завершающим разделителем сразу следует обратная косая черта, например,

/ abc / \

затем в конец шаблона добавляется обратная косая черта. Это сделано для того, чтобы
проверка состояния ошибки, которое возникает, если шаблон заканчивается обратной косой чертой, потому что

/ abc \ /

интерпретируется как первая строка шаблона, которая начинается с «abc /», в результате чего pcre2test
чтобы прочитать следующую строку как продолжение регулярного выражения.

За шаблоном может следовать список модификаторов (подробности ниже).

ПРЕДМЕТ ЛИНИЯ СИНТАКСИС



Перед тем, как каждая строка темы будет передана в pcre2_match () or pcre2_dfa_match (), ведущие и
конечный пробел удаляется, и строка сканируется на наличие экранирования обратной косой черты. В
Следующие ниже предоставляют средства видимого кодирования непечатаемых символов:

\ тревога (BEL, \ x07)
\ b backspace (\ x08)
\ e escape (\ x27)
\ f подача формы (\ x0c)
\ n перевод строки (\ x0a)
\ r возврат каретки (\ x0d)
\ t вкладка (\ x09)
\ v вертикальная табуляция (\ x0b)
\ nnn восьмеричный символ (до 3 восьмеричных цифр); всегда
байт, если> 255 в UTF-8, 16-битном или 32-битном режиме
\ o {dd ...} восьмеричный символ (любое количество восьмеричных цифр}
\ xhh шестнадцатеричный байт (до 2 шестнадцатеричных цифр)
\ x {hh ...} шестнадцатеричный символ (любое количество шестнадцатеричных цифр)

Использование \ x {hh ...} не зависит от использования UTF модификатор на выкройке. это
признается всегда. Внутри фигурных скобок может быть любое количество шестнадцатеричных цифр;
недопустимые значения вызывают сообщения об ошибках.

Обратите внимание, что \ xhh указывает один байт, а не один символ в режиме UTF-8; это делает это
возможно создание недопустимых последовательностей UTF-8 для целей тестирования. С другой стороны,
\ x {hh} интерпретируется как символ UTF-8 в режиме UTF-8, генерируя более одного байта, если
значение больше 127. При тестировании 8-битной библиотеки не в режиме UTF-8 \ x {hh}
генерирует один байт для значений меньше 256 и вызывает ошибку для больших значений.

В режиме UTF-16 принимаются все 4-значные значения \ x {hhhh}. Это позволяет
создавать недопустимые последовательности UTF-16 для целей тестирования.

В режиме UTF-32 принимаются все значения \ x {...}, состоящие из 4–8 цифр. Это позволяет
создавать недопустимые последовательности UTF-32 для целей тестирования.

Существует специальная последовательность обратной косой черты, которая указывает репликацию одного или нескольких
персонажи:

\ [ ] { }

Это позволяет тестировать длинные строки без необходимости предоставлять их как часть
файл. Например:

\ [abc] {4}

преобразуется в «abcabcabcabc». Эта функция не поддерживает вложение. Чтобы включить
закрывающую квадратную скобку в символах закодируйте как \ x5D.

Обратная косая черта, за которой следует знак равенства, отмечает конец строки темы и начало
списка модификаторов. Например:

abc \ = notbol, ​​notempty

Если строка темы пуста и за \ = следует пробел, строка рассматривается как
строка комментария и не используется для сопоставления. Например:

\ = Это комментарий.
abc \ = Это недопустимый список модификаторов.

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

ШАБЛОН МОДИФИКАТОРЫ



Есть несколько типов модификаторов, которые могут появляться в линиях узора. Если не указано иное
ниже, они также могут использоваться в #шаблон команды. Список модификаторов паттерна может быть добавлен к или
переопределить модификаторы по умолчанию, которые были установлены предыдущим #шаблон команда.

настройка компиляция кредита

Следующие модификаторы устанавливают параметры для pcre2_compile (). Наиболее распространены одно-
буквенные сокращения. Видеть pcre2api для описания их эффектов.

allow_empty_class установить PCRE2_ALLOW_EMPTY_CLASS
alt_bsux установить PCRE2_ALT_BSUX
alt_circumflex установить PCRE2_ALT_CIRCUMFLEX
alt_verbnames установить PCRE2_ALT_VERBNAMES
привязанный набор PCRE2_ANCHORED
auto_callout установить PCRE2_AUTO_CALLOUT
/ i набор без футляра PCRE2_CASELESS
Dollar_endonly установить PCRE2_DOLLAR_ENDONLY
/ s dotall set PCRE2_DOTALL
dupnames установить PCRE2_DUPNAMES
/ x расширенный набор PCRE2_EXTENDED
первая строка установлена ​​PCRE2_FIRSTLINE
match_unset_backref установить PCRE2_MATCH_UNSET_BACKREF
/ м многострочный набор PCRE2_MULTILINE
never_backslash_c установить PCRE2_NEVER_BACKSLASH_C
never_ucp установить PCRE2_NEVER_UCP
never_utf установить PCRE2_NEVER_UTF
no_auto_capture установить PCRE2_NO_AUTO_CAPTURE
no_auto_possess установить PCRE2_NO_AUTO_POSSESS
no_dotstar_anchor установить PCRE2_NO_DOTSTAR_ANCHOR
no_start_optimize установить PCRE2_NO_START_OPTIMIZE
no_utf_check установить PCRE2_NO_UTF_CHECK
ucp установить PCRE2_UCP
неловкий набор PCRE2_UNGREEDY
use_offset_limit установить PCRE2_USE_OFFSET_LIMIT
utf установить PCRE2_UTF

Помимо включения параметра PCRE2_UTF, параметр UTF модификатор вызывает все непечатаемые
символы в выходных строках, которые будут напечатаны с использованием нотации \ x {hh ...}. В противном случае те
менее 0x100 выводятся в шестнадцатеричном формате без фигурных скобок.

настройка компиляция контрольная

Следующие модификаторы влияют на процесс компиляции или запрашивают информацию о
шаблон:

bsr = [anycrlf | unicode] указывает обработку \ R
/ B bincode показывает двоичный код без длин
callout_info показать информацию выноски
отладка такая же, как информация, полный код
fullbincode показывает двоичный код с длинами
/ I info показать информацию о скомпилированном шаблоне
шестнадцатеричный шаблон кодируется в шестнадцатеричном формате
jit [= ] использовать JIT
jitfast использовать быстрый путь JIT
jitverify проверить использование JIT
locale = использовать этот языковой стандарт
max_pattern_length = установить максимальную длину рисунка
память показывает используемую память
новая строка = установить тип новой строки
null_context компилируется с пустым контекстом
parens_nest_limit = установить максимальную глубину скобок
posix использует POSIX API
push push-скомпилированный шаблон в стек
stackguard = протестировать функцию stackguard
tables = [0 | 1 | 2] выберите внутренние таблицы

Эффекты этих модификаторов описаны в следующих разделах.

Новая линия и \R обращение

The BSR модификатор указывает, что \ R в шаблоне должно совпадать. Если установлено значение «anycrlf»,
\ R соответствует только CR, LF или CRLF. Если установлено значение «unicode», \ R соответствует любому символу новой строки Unicode.
последовательность. Значение по умолчанию указывается при сборке PCRE2, а значение по умолчанию -
Юникод.

The новая линия модификатор определяет, какие символы следует интерпретировать как символы новой строки, как в
шаблон и в строках темы. Тип должен быть одним из CR, LF, CRLF, ANYCRLF или ANY.
(в верхнем или нижнем регистре).

Информация о a описания

The отлаживать модификатор - это сокращение для информация, полный код, запрашивая все доступные
Информация.

The двоичный код модификатор заставляет представление скомпилированного кода выводиться после
компиляция. Эта информация не содержит значений длины и смещения, что гарантирует
что один и тот же вывод создается для разных размеров внутренних ссылок и разного кода
единицы ширины. Используя двоичный код, одни и те же регрессионные тесты могут использоваться в разных
сред.

The полный код модификатор, напротив, приносит включить значения длины и смещения. Это используется
в нескольких специальных тестах, которые выполняются только для определенной ширины блока кода и размеров ссылок, и
также полезно для разовых тестов.

The info модификатор запрашивает информацию о скомпилированном шаблоне (привязан ли он,
имеет фиксированный первый символ и т. д.). Информация получена из
pcre2_pattern_info () функция. Вот несколько типичных примеров:

re> / (? i) (^ a | ^ b) / m, информация
Захват подшаблонов = 1
Параметры компиляции: многострочный
Общие варианты: безкорпусный многолинейный
Первый блок кода в начале или после новой строки
Нижняя граница длины темы = 1

re> / (? i) abc / info
Захват подшаблонов = 0
Варианты компиляции:
Общие варианты: безкорпусный
Первая кодовая единица = 'a' (без регистра)
Единица последнего кода = 'c' (без регистра)
Нижняя граница длины темы = 3

«Параметры компиляции» - это параметры, указанные модификаторами; "общие параметры" добавили параметры
которые взяты или выведены из шаблона. Если оба набора параметров одинаковы, просто
выводится единственная строка с «опциями»; если вариантов нет, строка опускается. "Первый код
unit "- это то место, где должно начинаться любое совпадение; если их больше одного, они отображаются как
"начальные кодовые единицы". "Последняя кодовая единица" - это последняя буквальная кодовая единица, которая должна присутствовать.
в любом матче. Это не обязательно последний символ. Эти строки опускаются, если нет
записываются начальные или конечные единицы кода.

The callout_info модификатор запрашивает информацию обо всех выносках в шаблоне. А
их список выводится в конце любой другой запрошенной информации. Для каждого
выноска, либо ее номер, либо строка, за которой следует элемент, следующий за ним в
шаблону.

Прохождение a NULL, контекст

Как правило, pcre2test передает блок контекста в pcre2_compile (), Если нулевой_контекст
установлен модификатор, однако передается NULL. Это для проверки того, что pcre2_compile () ведет себя
в этом случае правильно (используются значения по умолчанию).

Указание a описания in шестнадцатеричный

The шестнадцатеричный модификатор указывает, что символы шаблона должны интерпретироваться как
пары шестнадцатеричных цифр. Между парами разрешены пробелы. Например:

/ ab 32 59 / шестнадцатеричный

Эта функция предоставляется как способ создания шаблонов, содержащих двоичный ноль и другие
непечатаемые символы. По умолчанию, pcre2test передает шаблоны как строки с нулевым завершением
в pcre2_compile (), давая длину как PCRE2_ZERO_TERMINATED. Однако для выкройки
указывается в шестнадцатеричном формате, передается фактическая длина шаблона.

Порождающий длинной повторяющийся паттеранами

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

\ [ ] { }

раскрываются до того, как образец передается в pcre2_compile (). Например, \ [AB] {6000} - это
расширен до "ABAB ..." 6000 раз. Эта конструкция не может быть вложенной. Начальное "\ ["
последовательность распознается, только если "] {" с последующими десятичными цифрами и "}" встречается позже в
шаблон. В противном случае символы остаются в шаблоне без изменений.

Если часть развернутого шаблона выглядит как расширение, но на самом деле является частью фактического
шаблона, нежелательного расширения можно избежать, задав два значения в квантификаторе. За
Например, \ [AB] {6000,6000} не распознается как элемент расширения.

Если же линия индикатора info модификатор установлен на развернутом шаблоне, результат расширения
включены в выводимую информацию.

JIT- компиляция

Компиляция точно в срок (JIT) - это тяжелая оптимизация, которая может значительно ускорить
сопоставление с образцом. Увидеть pcre2jit документация для деталей. JIT-компиляция происходит,
необязательно, после того, как шаблон был успешно скомпилирован во внутреннюю форму. JIT
компилятор преобразует это в оптимизированный машинный код. Он должен знать, было ли время матча
параметры PCRE2_PARTIAL_HARD и PCRE2_PARTIAL_SOFT будут использоваться, потому что разные
код генерируется для разных случаев. Увидеть частично модификатор в "Модификаторах темы"
ниже приведены подробные сведения о том, как эти параметры указаны для каждой попытки сопоставления.

JIT-компиляция запрашивается / jit модификатор шаблона, который необязательно может быть
за которым следует знак равенства и число в диапазоне от 0 до 7. Три бита, составляющие
число указывает, какой из трех режимов работы JIT должен быть скомпилирован:

1 компиляция JIT-кода для неполного сопоставления
2 компилируйте JIT-код для мягкого частичного сопоставления
4 компилируйте JIT-код для жесткого частичного сопоставления

Возможные значения для / jit модификатор поэтому:

0 отключить JIT
Только 1 нормальное соответствие
2 только мягкое частичное совпадение
3 нормальное и мягкое частичное совпадение
4 только жесткое частичное совпадение
6 только мягкое и жесткое частичное совпадение
7 все три режима

Если номер не указан, предполагается 7. Фраза «частичное соответствие» означает обращение к
pcre2_match () с установленной опцией PCRE2_PARTIAL_SOFT или PCRE2_PARTIAL_HARD.
Обратите внимание, что такой вызов может вернуть полное совпадение; параметры позволяют
частичное совпадение, но не требует этого. Также обратите внимание, что если вы запрашиваете только JIT-компиляцию
для частичного соответствия (например, / jit = 2), но не устанавливайте частично модификатор на
строка темы, это совпадение не будет использовать JIT-код, потому что ни один не был скомпилирован для неполного
соответствия.

Если JIT-компиляция прошла успешно, скомпилированный JIT-код будет автоматически использоваться, когда
выполняется сопоставление соответствующего типа, кроме случаев, когда указаны несовместимые параметры времени выполнения.
Для получения дополнительной информации см. pcre2jit документация. Также джитстек модификатор ниже для
способ установки размера JIT-стека.

Если же линия индикатора резкий указан модификатор, сопоставление выполняется с помощью JIT "быстрого пути"
интерфейс, pcre2_jit_match (), который пропускает некоторые проверки работоспособности, выполняемые
pcre2_match (), и, конечно, не работает, когда JIT не поддерживается. Если резкий is
указано без JIT, предполагается jit = 7.

Если же линия индикатора jitverify указан модификатор, отображается информация о скомпилированном шаблоне
была ли JIT-компиляция успешной или нет. Если jitverify указывается без JIT,
предполагается jit = 7. Если JIT-компиляция прошла успешно, когда jitverify установлен, текст "(JIT)"
добавляется в первую строку вывода после совпадения или несовпадения, когда JIT-скомпилированный код был
фактически использованный в матче.

настройка a местный

The / locale модификатор должен указывать имя локали, например:

/ шаблон / locale = fr_FR

Данная локаль установлена, pcre2_maketables () вызывается для построения набора таблиц символов
для локали, а затем передается в pcre2_compile () при составлении регулярного
выражение. Эти же таблицы используются при сопоставлении следующих строк темы. В
/ locale модификатор применяется только к узору, на котором он появляется, но может быть указан в
#шаблон команда, если требуется значение по умолчанию. Установка языкового стандарта и таблиц альтернативных символов
являются взаимоисключающими.

Показ описания Память

The /объем памяти модификатор определяет размер в байтах памяти, используемой для хранения скомпилированных
шаблон для вывода. Это не включает размер pcre2_code блокировать; просто
собственно скомпилированные данные. Если шаблон впоследствии передается JIT-компилятору,
также выводится размер JIT-скомпилированного кода. Вот пример:

re> / a (b) c / jit, память
Распределение памяти (кодовое пространство): 21
Распределение памяти (код JIT): 1910

Ограничивающий вложенные скобки

The parens_nest_limit модификатор устанавливает ограничение на глубину вложенных скобок в
шаблон. Превышение лимита вызывает ошибку компиляции. По умолчанию для библиотеки
устанавливается при сборке PCRE2, но pcre2test устанавливает собственное значение по умолчанию 220, которое требуется для
запуск стандартного набора тестов.

Ограничивающий описания

The max_pattern_length модификатор устанавливает ограничение в единицах кода на длину шаблона, который
pcre2_compile () приму. Превышение лимита вызывает ошибку компиляции. По умолчанию
- это наибольшее число, которое может содержать переменная PCRE2_SIZE (практически неограниченное).

. POSIX обертка API

The / posix модификатор причины pcre2test для вызова PCRE2 через API оболочки POSIX, а не
собственный API. Это поддерживает только 8-битную библиотеку. Обратите внимание, что это не подразумевает POSIX
семантика соответствия; для более подробной информации см. pcre2posix документация. Когда POSIX API
используется, следующие модификаторы шаблона задают параметры для regcomp () функция:

без футляра REG_ICASE
многострочный REG_NEWLINE
no_auto_capture REG_NOSUB
dotall REG_DOTALL)
ungreedy REG_UNGREEDY) Эти параметры не являются частью
ucp REG_UCP) стандарт POSIX
utf REG_UTF8)

The regerror_buffsize модификатор определяет размер буфера ошибок, который передается в
regerror () в случае ошибки компиляции. Например:

/ abc / posix, regerror_buffsize = 20

Это дает возможность проверить поведение regerror () когда буфер слишком мал
для сообщения об ошибке. Если этот модификатор не установлен, используется большой буфер.

The послесловие и все после текста Модификаторы темы работают, как описано ниже. Все остальные
модификаторы вызывают ошибку.

Тестирование стек охрана которая

The / stackguard модификатор используется для проверки использования pcre2_set_compile_recursion_guard (), чтобы
функция, обеспечивающая возможность проверки доступности стека во время компиляции
(См pcre2api документацию для деталей). Если число, указанное модификатором, равно
больше нуля, pcre2_set_compile_recursion_guard () вызывается для установки обратного вызова от
pcre2_compile () в локальную функцию. Аргумент, который он получает, - это текущее вложение.
глубина скобок; если это больше, чем значение, заданное модификатором, ненулевое значение
возвращается, вызывая прерывание компиляции.

. альтернатива персонаж Эта таблица

Значение, указанное для / столы модификатор должен быть одной из цифр 0, 1 или 2. Это
вызывает передачу определенного набора встроенных таблиц символов в pcre2_compile (). Это
используется в тестах PCRE2 для проверки поведения с различными таблицами символов. Цифра
определяет таблицы следующим образом:

0 не передавать таблицы специальных символов
1 таблицы ASCII по умолчанию, распространенные в
pcre2_chartables.c.dist
2 набор таблиц, определяющих символы ISO 8859

В таблице 2 некоторые символы, коды которых больше 128, обозначены как буквы,
цифры, пробелы и т. д. Установка альтернативных таблиц символов и локали взаимно
Эксклюзивный.

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

Следующие модификаторы действительно являются предметными модификаторами и описаны ниже. Тем не мение,
они могут быть включены в список модификаторов шаблона, и в этом случае они применяются к каждому
строка темы, обработанная с использованием этого шаблона. Они могут не появляться в #шаблон
команды. Эти модификаторы не влияют на процесс компиляции.

aftertext показать текст после совпадения
allaftertext показать текст после захвата
allcaptures показать все захваты
allusedtext показать весь проверенный текст
/ g глобальное глобальное соответствие
отметка показать отметку значения
заменить = указать заменяющую строку
startchar показывает начальный символ, когда это необходимо
replace_extended использовать PCRE2_SUBSTITUTE_EXTENDED
substitute_overflow_length использовать PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
substitute_unknown_unset используйте PCRE2_SUBSTITUTE_UNKNOWN_UNSET
substitute_unset_empty используйте PCRE2_SUBSTITUTE_UNSET_EMPTY

Эти модификаторы могут не отображаться в #шаблон команда. Если вы хотите, чтобы они использовались по умолчанию, установите
их в #предмет команда.

Экономия a скомпилированный описания

Когда узор с протолкнуть. модификатор успешно компилируется, он помещается в стек
скомпилированных шаблонов, и pcre2test ожидает, что следующая строка будет содержать новый шаблон (или
command) вместо темы. Эта возможность используется при сохранении скомпилированных паттернов в
файл, как описано в разделе «Сохранение и восстановление скомпилированных шаблонов».
ниже. протолкнуть. модификатор несовместим с модификаторами компиляции, такими как Глобальный которая
действовать во время матча. Все указанные параметры игнорируются с предупреждением, за исключением
заменить, что вызывает ошибку. Обратите внимание, что, jitverify, что разрешено, не несет
до любого последующего сопоставления, в котором используется этот шаблон.

ПРЕДМЕТ МОДИФИКАТОРЫ



Модификаторы, которые могут появляться в строках темы и #предмет команды бывают двух типов.

настройка совпадение кредита

Следующие модификаторы устанавливают параметры для pcre2_match () or pcre2_dfa_match (). Посмотреть предварительная подготовка
для описания их эффектов.

привязанный набор PCRE2_ANCHORED
dfa_restart установить PCRE2_DFA_RESTART
dfa_shortest установить PCRE2_DFA_SHORTEST
no_utf_check установить PCRE2_NO_UTF_CHECK
notbol установить PCRE2_NOTBOL
непустой набор PCRE2_NOTEMPTY
notempty_atstart установить PCRE2_NOTEMPTY_ATSTART
noteol набор PCRE2_NOTEOL
partial_hard (или ph) установить PCRE2_PARTIAL_HARD
partial_soft (или ps) установить PCRE2_PARTIAL_SOFT

Модификаторы частичного соответствия снабжены сокращениями, потому что они появляются
часто в тестах.

Если же линия индикатора / posix в шаблоне присутствовал модификатор, из-за чего API-оболочка POSIX
используется, единственными модификаторами установки параметров, которые имеют какое-либо влияние, являются нотбол, не пусто и
Noteol, в результате чего REG_NOTBOL, REG_NOTEMPTY и REG_NOTEOL соответственно передаются в
regexec (). Любые другие модификаторы вызывают ошибку.

настройка совпадение контрольная

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

aftertext показать текст после совпадения
allaftertext показать текст после захвата
allcaptures показать все захваты
allusedtext показать весь запрашиваемый текст (только без JIT)
altglobal альтернативное глобальное сопоставление
callout_capture показывать снимки во время вызова
callout_data = установить значение для передачи через выноски
callout_fail = [: ] ошибка контрольной выноски
callout_none не предоставляют функцию выноски
копия = скопировать захваченную подстроку
использование dfa pcre2_dfa_match ()
find_limits найти ограничения на совпадение и рекурсию
получить = извлечь захваченную подстроку
getall извлечь все захваченные подстроки
/ g глобальное глобальное соответствие
jitstack = установить размер JIT-стека
отметка показать отметку значения
match_limit = установить предел совпадения
память показывает использование памяти
соответствие null_context с пустым контекстом
смещение = установить начальное смещение
offset_limit = установить предел смещения
овектор = установить размер выходного вектора
recursion_limit = установить предел рекурсии
заменить = указать заменяющую строку
startchar показывает startchar при необходимости
startoffset = то же, что и смещение =
replace_extedded использовать PCRE2_SUBSTITUTE_EXTENDED
substitute_overflow_length использовать PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
substitute_unknown_unset используйте PCRE2_SUBSTITUTE_UNKNOWN_UNSET
substitute_unset_empty используйте PCRE2_SUBSTITUTE_UNSET_EMPTY
zero_terminate передать тему как завершающуюся нулем

Эффекты этих модификаторов описаны в следующих разделах.

Показ больше текст

The послесловие модификатор запрашивает это, а также выводит часть строки темы
что соответствует всему шаблону, pcre2test должен дополнительно вывести оставшуюся часть
строка темы. Это полезно для тестов, где предмет содержит несколько копий
та же подстрока. В все после текста модификатор запрашивает то же действие для захваченных подстрок
а также основная совпавшая подстрока. В каждом случае остаток выводится на
следующая строка с плюсом после номера захвата.

The упомянутый текст модификатор требует, чтобы весь текст, к которому обращались во время успешного
должно быть показано совпадение с образцом интерпретатором. Эта функция не поддерживается для JIT
совпадение, и если запрошено с JIT, оно игнорируется (с предупреждающим сообщением). Установка этого
модификатор влияет на результат, если в начале совпадения есть ретроспективный просмотр, или
смотреть вперед в конце, или если в шаблоне используется \ K. Персонажи, которые предшествуют или следуют за
начало и конец фактического совпадения указываются в выводе символами '<' или '>'
под ними. Вот пример:

re> / (? <= pqr) abc (? = xyz) /
данные> 123pqrabcxyz456 \ = allusedtext
0: pqrabcxyz
<<< >>>

Это показывает, что совпавшая строка - "abc" с предшествующей и следующей строками.
«pqr» и «xyz» использовались во время сопоставления (при обработке утверждений).

The стартовый символ модификатор требует, чтобы был указан начальный символ для совпадения, если
он отличается от начала совпадающей строки. Это происходит только тогда, когда
\ K был обработан как часть соответствия. В этой ситуации вывод для согласованного
строка отображается от начального символа, а не от точки совпадения, с
символы с циркумфлексом под предыдущими символами. Например:

re> / abc \ Kxyz /
данные> abcxyz \ = startchar
0: абксиз
^^^

В отличие от упомянутый текст, стартовый символ модификатор можно использовать с JIT. Однако эти двое
модификаторы исключают друг друга.

Показ ценностное of ВСЕ захватить группы

The все модификатор требует, чтобы значения всех потенциальных захваченных круглых скобок были
вывод после матча. По умолчанию только те из них, которые на самом деле используются в
выводятся совпадения (соответствует коду возврата из pcre2_match ()). Группы, которые сделали
не принимать участие в матче выводятся как " ".

Тестирование выноски

Функция выноски предоставляется, когда pcre2test вызывает функции сопоставления библиотеки, если только
callout_none указан. Если callout_capture установлен, текущие захваченные группы
вывод при возникновении выноски.

The callout_fail модификатору можно присвоить одно или два числа. Если есть только одно число, 1
возвращается вместо 0, когда достигается обратный вызов этого номера. Если два числа
задано, 1 возвращается, когда выноска достигается за й раз. Обратите внимание, что выноски
со строковыми аргументами всегда дается число ноль. См. "Выноски" ниже для
описание выхода при выноске его принято.

The callout_data модификатору может быть присвоено беззнаковое или отрицательное число. Это установлено как
"пользовательские данные", которые передаются в функцию сопоставления и возвращаются, когда выноска
вызывается функция. Любое значение, отличное от нуля, используется как возврат из pcre2test's
функция выноски.

Обнаружение ВСЕ спички in a string

Поиск всех возможных совпадений в теме может быть запрошен Глобальный or
/ altglobal модификатор. После нахождения совпадения функция сопоставления вызывается снова, чтобы
поиск по оставшейся части темы. Разница между Глобальный и альтернативный глобальный является то, что
первый использует start_offset аргумент pcre2_match () or pcre2_dfa_match () , чтобы начать
поиск в новой точке во всей строке (что и делает Perl), тогда как
последний пропускает сокращенную тему. Это имеет значение для процесса сопоставления, если
шаблон начинается с утверждения просмотра назад (включая \ b или \ B).

Если сопоставлена ​​пустая строка, следующее сопоставление выполняется с помощью PCRE2_NOTEMPTY_ATSTART и
Установлены флаги PCRE2_ANCHORED для поиска другого непустого совпадения в том же самом
точка в теме. Если это совпадение не удается, начальное смещение увеличивается, и нормальное
совпадение повторяется. Это имитирует то, как Perl обрабатывает такие случаи при использовании /g изменение
или расколоть() функция. Обычно начальное смещение увеличивается на один символ, но если
соглашение о новой строке распознает CRLF как новую строку, а текущий символ - CR
за которым следует LF, происходит продвижение на два символа.

Тестирование подстрока добыча Функции

The копия и получить модификаторы могут использоваться для проверки pcre2_substring_copy_xxx () и
pcre2_substring_get_xxx () функции. Их можно давать более одного раза, и каждый может
укажите название или номер группы, например:

abcd \ = copy = 1, copy = 3, get = G1

Если же линия индикатора #предмет команда используется для установки копирования и / или получения списков по умолчанию, их можно отключить
указав отрицательное число, чтобы отменить все пронумерованные группы, и пустое имя, чтобы отменить
все названные группы.

The получить все тесты модификаторов pcre2_substring_list_get (), который извлекает все захваченные
подстроки.

Если строка темы успешно сопоставлена, подстроки извлекаются для удобства
функции выводятся с C, G или L после номера строки вместо двоеточия. Это
в дополнение к обычному полному списку. Длина строки (то есть возврат из
функция извлечения) указывается в скобках после каждой подстроки, за которой следует имя
когда добыча была по имени.

Тестирование замена функция

Если же линия индикатора заменить установлен модификатор, pcre2_substitute () функция вызывается вместо одной
функций согласования. Обратите внимание, что строки замены не могут содержать запятые, потому что
запятая означает конец модификатора. Это не считается проблемой при тестировании
программу.

В отличие от тематических строк, pcre2test не обрабатывает заменяющие строки для выхода
последовательности. В режиме UTF проверяется замещающая строка, чтобы узнать, является ли она допустимой UTF-8.
нить. Если это так, он правильно конвертируется в строку UTF соответствующей кодовой единицы.
ширина. Если это недопустимая строка UTF-8, отдельные единицы кода копируются напрямую.
Это дает возможность передать недопустимую строку UTF-8 в целях тестирования.

Следующие модификаторы устанавливают параметры (в дополнение к обычным параметрам соответствия) для
pcre2_substitute ():

глобальный PCRE2_SUBSTITUTE_GLOBAL
replace_extended PCRE2_SUBSTITUTE_EXTENDED
длина_замены_переполнения PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
replace_unknown_unset PCRE2_SUBSTITUTE_UNKNOWN_UNSET
replace_unset_empty PCRE2_SUBSTITUTE_UNSET_EMPTY

После успешной замены выводится измененная строка, которой предшествует номер
замены. Это может быть ноль, если совпадений не было. Вот простой пример
подстановочный тест:

/ abc / replace = ххх
= abc = abc =
1: = ххх = abc =
= abc = abc = \ = глобальный
2: = ххх = ххх =

Строки темы и замены должны быть относительно короткими (менее 256
символов) для проверки подстановки, поскольку используются буферы фиксированного размера. Чтобы было легко
проверка на переполнение буфера, если строка замены начинается с числа в квадрате
скобки, это число передается в pcre2_substitute () как размер выходного буфера,
с заменой строки, начинающейся со следующего символа. Вот пример, который проверяет
крайний случай:

/ abc /
123abc123 \ = replace = [10] XYZ
1: 123XYZ123
123abc123 \ = replace = [9] XYZ
Ошибка: ошибка -47: больше нет памяти

Действие по умолчанию pcre2_substitute () должен вернуть PCRE2_ERROR_NOMEMORY, когда вывод
буфер слишком мал. Однако, если параметр PCRE2_SUBSTITUTE_OVERFLOW_LENGTH установлен (
используя replace_overflow_length модификатор), pcre2_substitute () продолжает проходить
движения сопоставления и подстановки, чтобы вычислить размер буфера, который
обязательный. Когда это произойдет, pcre2test показывает требуемую длину буфера (включая
пробел для завершающего нуля) как часть сообщения об ошибке. Например:

/ abc / replace_overflow_length
123abc123 \ = replace = [9] XYZ
Ошибка: ошибка -47: больше нет памяти: требуется 10 единиц кода

Строка замены игнорируется при сопоставлении POSIX и DFA. Указание частичного соответствия
вызывает возврат ошибки ("неверное значение параметра") из pcre2_substitute ().

настройка JIT- стек размер

The джитстек модификатор позволяет установить максимальный размер стека, который используется
код своевременной оптимизации. Он игнорируется, если JIT-оптимизация не используется. В
значение - это количество килобайт. Предоставление стека размером больше 32 КБ по умолчанию
необходимо только для очень сложных лекал.

настройка совпадение и рекурсия рамки

The match_limit и recursion_limit модификаторы устанавливают соответствующие ограничения в матче
контекст. Эти значения игнорируются, когда find_limits модификатор указан.

Обнаружение минимальный рамки

Если же линия индикатора find_limits модификатор присутствует, pcre2test призывы pcre2_match () несколько раз,
установка разных значений в контексте совпадения с помощью pcre2_set_match_limit () и
pcre2_set_recursion_limit () пока он не найдет минимальные значения для каждого параметра, который
позволять pcre2_match () выполнить без ошибок.

Если используется JIT, имеет значение только предел соответствия. Если используется сопоставление DFA,
ни один из ограничений не имеет значения, и этот модификатор игнорируется (с предупреждением).

The match_limit число - это мера количества выполняемых обратных поисков, и
изучение минимальной ценности может быть поучительным. Для большинства простых совпадений это число
довольно маленький, но для шаблонов с очень большим количеством возможностей соответствия он может
становятся большими очень быстро с увеличением длины строки темы. В
match_limit_recursion число - это мера того, сколько стека (или, если PCRE2 скомпилирован с
NO_RECURSE, сколько памяти (кучи) необходимо для завершения попытки сопоставления.

Показ МАРК имена

The отметка модификатор вызывает имена из управляющих глаголов с возвратом, которые возвращаются из
звонки в pcre2_match () для отображения. Если оценка возвращается за совпадение, несоответствие или
частичное совпадение, pcre2test показывает это. Для совпадения он находится на отдельной строке, помеченной
«МК:». В противном случае он добавляется к сообщению о несовпадении.

Показ Память пользования

The Память модификатор причины pcre2test для регистрации всех вызовов выделения и освобождения памяти, которые
происходят во время операции сопоставления.

настройка a начиная смещение

The смещение модификатор устанавливает смещение в строке темы, с которой начинается сопоставление. Его
значение - это количество кодовых единиц, а не символов.

настройка an смещение предел

The offset_limit модификатор устанавливает предел для незакрепленных совпадений. Если совпадение не найдено
начиная с этого смещения в теме или до него, выдается возврат «нет совпадения». Данные
значение - это количество кодовых единиц, а не символов. Когда используется этот модификатор,
use_offset_limit для паттерна должен быть установлен модификатор; в противном случае ошибка
генерируется.

настройка размер of выходной вектор

The овектор модификатор применяется только к теме, в которой он появляется, хотя
конечно, его также можно использовать для установки значения по умолчанию в #предмет команда. В нем указывается номер
пар смещений, доступных для хранения совпадающей информации. По умолчанию
15. Воспользуйтесь функционалом

Нулевое значение полезно при тестировании POSIX API, поскольку оно вызывает regexec () быть
вызывается с нулевым вектором захвата. Если не тестировать POSIX API, используется нулевое значение.
вызывать pcre2_match_data_create_from_pattern () быть вызванным, чтобы создать матч
блок ровно нужного размера для выкройки. (Невозможно создать совпадение
блок с овектором нулевой длины; всегда есть хотя бы одна пара смещений.)

Прохождение предмет as с нулевым окончанием

По умолчанию строка темы передается в собственную функцию сопоставления API с ее
правильная длина. Чтобы проверить возможность передачи строки с нулевым символом в конце,
ноль_терминировать предоставляется модификатор. Это приводит к тому, что длина передается как
PCRE2_ZERO_TERMINATED. (При сопоставлении через интерфейс POSIX этот модификатор не имеет
эффект, поскольку нет возможности передать длину.)

При тестировании pcre2_substitute (), этот модификатор также имеет эффект передачи
строка замены как завершающаяся нулем.

Прохождение a NULL, контекст

Как правило, pcre2test передает блок контекста в pcre2_match (), pcre2_dfa_match () or
pcre2_jit_match (), Если нулевой_контекст установлен модификатор, однако передается NULL. Это
для проверки правильности поведения соответствующих функций в этом случае (они используют значение по умолчанию
ценности). Этот модификатор нельзя использовать с find_limits модификатор или при тестировании
функция подстановки.

АЛЬТЕРНАТИВА МАТЧИКИ Функция



По умолчанию pcre2test использует стандартную функцию сопоставления PCRE2, pcre2_match () чтобы соответствовать
каждая строка темы. PCRE2 также поддерживает альтернативную функцию сопоставления,
pcre2_dfa_match (), который работает по-другому и имеет некоторые ограничения. В
различия между двумя функциями описаны в pcre2matching документация.

Если же линия индикатора DFA установлен модификатор, используется альтернативная функция сопоставления. Эта функция
находит все возможные совпадения в заданном месте в теме. Если, однако, dfa_shortest
установлен модификатор, обработка останавливается после обнаружения первого совпадения. Это всегда
кратчайшее возможное совпадение.

DEFAULT ВЫВОД от pcre2test



В этом разделе описывается вывод, когда функция нормального сопоставления, pcre2_match (), Является
использовался.

Когда матч успешен, pcre2test выводит список захваченных подстрок, начиная с
число 0 для строки, которая соответствует всему шаблону. В противном случае выводится «Нет совпадений».
когда возвращается PCRE2_ERROR_NOMATCH или "Частичное совпадение:", за которым следует частично
соответствующая подстрока, когда возвращается PCRE2_ERROR_PARTIAL. (Обратите внимание, что это весь
подстрока, которая была проверена во время частичного совпадения; он может включать символы перед
фактическое начало совпадения, если было задействовано утверждение просмотра назад, \ K, \ b или \ B.)

Для любого другого возврата, pcre2test выводит отрицательный номер ошибки PCRE2 и короткое
описательная фраза. Если ошибка связана с неудачной проверкой строки UTF, смещение единицы кода
также выводится начало неудачного символа. Вот пример интерактивного
pcre2test бежать.

$ pcre2test
PCRE2 версия 9.00 2014

re> / ^ abc (\ d +) /
данные> abc123
0: абс123
1: 123
данные> xyz
Не совпадает

Неустановленные подстроки захвата, за которыми не следует установленная, не отображаются
pcre2test если только все модификатор указан. В следующем примере
две захватывающие подстроки, но когда первая строка данных совпадает, вторая не устанавливается
подстрока не отображается. "Внутренняя" неустановленная подстрока отображается как " ", Для
вторая строка данных.

re> / (а) | (б) /
данные> а
0: а
1: а
данные> b
0: б
1:
2: б

Если строки содержат какие-либо непечатаемые символы, они выводятся как экранирование \ xhh, если
значение меньше 256 и режим UTF не установлен. В противном случае они выводятся как \ x {hh ...}
убегает. См. Ниже определение непечатаемых символов. Если / после текста
установлен модификатор, за выводом для подстроки 0 следует остальная часть темы
строка, обозначенная "0+", например:

повторно> / кошка / после текста
данные> катаракта
0: кошка
0+ акт

Если требуется глобальное сопоставление, результаты последовательных попыток сопоставления выводятся в
последовательность, например:

re> / \ Bi (\ w \ w) / g
данные> Миссисипи
0: исс
1: сс
0: исс
1: сс
0: ипп
1: стр

«Нет совпадения» выводится только в том случае, если первая попытка совпадения не удалась. Вот пример
сообщение об ошибке (смещение 4, указанное смещение модификатор находится за концом
строка темы):

re> / xyz /
данные> xyz \ = смещение = 4
Ошибка -24 (неверное значение смещения)

Обратите внимание, что в то время как шаблоны могут быть продолжены на нескольких строках (используется простая подсказка ">"
для продолжения), темы не могут. Однако новые строки могут быть включены в тему
с помощью escape-символа \ n (или \ r, \ r \ n и т. д., в зависимости от настройки последовательности новой строки).

ВЫВОД от АЛЬТЕРНАТИВА МАТЧИКИ Функция



Когда альтернативная функция сопоставления, pcre2_dfa_match (), используется, вывод состоит из
список всех совпадений, которые начинаются с первой точки в теме, где есть в
хотя бы одно совпадение. Например:

re> / (тангаж | мандарин | загар) /
данные> желтый мандарин \ = dfa
0: мандарин
1: тангаж
2: загар

Использование функции нормального сопоставления для этих данных позволяет найти только "отпечаток". Самое длинное совпадение
строка всегда дается первой (и нумеруется нулем). После возврата PCRE2_ERROR_PARTIAL
вывод - «Частичное совпадение:», за которым следует частично совпадающая подстрока. Обратите внимание, что это
это вся подстрока, которая была проверена во время частичного совпадения; это может включать
перед фактическим началом совпадения, если было выполнено утверждение просмотра назад, \ b или \ B
вовлеченный. (\ K не поддерживается для сопоставления DFA.)

Если запрашивается глобальное сопоставление, поиск дальнейших совпадений возобновляется в конце
самый длинный матч. Например:

re> / (тангенс | мандарин | загар) / г
данные> желтый мандарин и пикантная султана \ = dfa
0: мандарин
1: тангаж
2: загар
0: тангаж
1: загар
0: загар

Альтернативная функция сопоставления не поддерживает захват подстроки, поэтому модификаторы
которые связаны с захваченными подстроками, не актуальны.

ПЕРЕЗАГРУЗКА ПОСЛЕ A ЧАСТИЧНОЕ МАТЧ



Когда альтернативная функция сопоставления дала возврат PCRE2_ERROR_PARTIAL,
указывая, что объект частично соответствует шаблону, вы можете возобновить сопоставление с
дополнительные данные о субъекте с помощью dfa_restart модификатор. Например:

re> / ^ \ d? \ d (янв | фев | мар | апр | май | июн | июл | авг | сен | окт | ноя | декабрь) \ d \ d $ /
данные> 23ja \ = P, dfa
Частичное совпадение: 23ja
данные> n05 \ = dfa, dfa_restart
0: н05

Для получения дополнительной информации о частичном сопоставлении см. pcre2partial документация.

ПРИЗЫВЫ



Если шаблон содержит какие-либо запросы уточнения, pcre2testвызывается функция выноски
во время сопоставления, если callout_none указан. Это работает с обоими подходящими
функции.

Функция выноски в pcre2test по умолчанию возвращает ноль (продолжить сопоставление), но вы можете
использовать callout_fail модификатор в строке темы (как описано выше), чтобы изменить это и
другие параметры выноски.

Вставка выноски может быть полезна при использовании pcre2test проверить сложные регулярные
выражения. Для получения дополнительной информации о выносках см. pcre2callout документация.

Вывод для выноски с числовыми аргументами и выноски со строковыми аргументами:
немного отличается.

Уточнения численный Аргументы

По умолчанию функция выноски отображает номер выноски, начальную и текущую
позиции в тексте темы во время выноски и следующий элемент шаблона, который будет протестирован.
Например:

---> pqrabcdef
0 ^ ^ \ d

Эти выходные данные показывают, что выноска номер 0 произошла для попытки сопоставления, начиная с
четвертый символ строки темы, когда указатель находился на седьмом символе, и
когда следующим элементом шаблона был \ d. Выводится только один циркумфлекс, если начальная и текущая
позиции такие же.

Предполагается, что выноски с номером 255 являются автоматическими выносками, вставленными в результате
/ auto_callout модификатор шаблона. В этом случае вместо номера выноски
смещение в шаблоне, которому предшествует плюс, выводится. Например:

re> / \ d? [AE] \ * / auto_callout
данные> E *
---> E *
+0 ^ \ d?
+3 ^ [AE]
+8 ^^ \ *
+10 ^ ^
0: E *

Если шаблон содержит (* MARK) элементов, дополнительная строка выводится при изменении
последняя отметка передается в функцию выноски. Например:

re> / a (* МАРК: X) bc / auto_callout
данные> abc
---> abc
+0 ^ а
+1 ^^ (* ОТМЕТКА: X)
+10 ^^ б
Последняя оценка: X
+11 ^ ^ с
+12 ^ ^
0: азбука

Знак меняется между совпадающими «a» и «b», но остается неизменным для остальной части
совпадение, поэтому больше ничего не выводится. Если в результате поиска с возвратом метка изменится на
будучи неустановленным, текст " "выводится.

Уточнения string Аргументы

Вывод для выноски со строковым аргументом аналогичен, за исключением того, что вместо
вывод номера выноски перед индикаторами положения, строкой выноски и ее
смещение в строке шаблона выводятся перед отражением строки темы, и
строка темы отображается для каждого выноски. Например:

re> / ^ ab (? C'first ') cd (? C "второй") ef /
данные> abcdefg
Выноска (7): "первый"
---> abcdefg
^ ^ с
Выноска (20): «секунда»
---> abcdefg
^ ^ е
0: абкдеф

НЕ ПЕЧАТЬ ПЕРСОНАЖИ



После появления pcre2test выводит текст в скомпилированной версии шаблона, байты, отличные от
32–126 всегда обрабатываются как непечатаемые символы и поэтому отображаются как шестнадцатеричные.
ускользает.

После появления pcre2test выводит текст, который является совпадающей частью строки темы, он ведет себя
таким же образом, если для шаблона не был установлен другой языковой стандарт (с использованием / locale
модификатор). В этом случае isprint () функция используется для различения печатных и непечатных
печать символов.

ЭКОНОМИЯ И ВОССТАНОВЛЕНИЕ СОСТАВЛЕНО СХЕМЫ



Можно сохранить скомпилированные паттерны на диск или где-нибудь еще и перезагрузить их позже,
при соблюдении ряда ограничений. Данные JIT не могут быть сохранены. Хост, на котором
перезагружаемые шаблоны должны работать под управлением той же версии PCRE2, с той же кодовой единицей
width, а также должны иметь такую ​​же последовательность байтов, ширину указателя и тип PCRE2_SIZE. До
скомпилированные шаблоны могут быть сохранены, они должны быть сериализованы, то есть преобразованы в поток
байтов. Один поток байтов может содержать любое количество скомпилированных шаблонов, но все они должны
используйте те же таблицы символов. Одна копия таблиц включается в поток байтов.
(его размер 1088 байт).

Функции, имена которых начинаются с pcre2_serialize_ используются для сериализации и де-
сериализация. Они описаны в pcre2serialize документация. В этом разделе мы
описать особенности pcre2test которые можно использовать для проверки этих функций.

Когда узор с протолкнуть. модификатор успешно скомпилирован, он помещается в стек
скомпилированные шаблоны, и pcre2test ожидает, что следующая строка будет содержать новый шаблон (или
command) вместо темы. Таким образом можно составить ряд шаблонов.
и сохранил. В протолкнуть. модификатор несовместим с POSIX, и модификаторы управления, которые действуют
во время совпадения игнорируются (с сообщением). В jitverify модификатор применяется только при компиляции
время. Команда

#спасти

вызывает сериализацию всех составных шаблонов и запись результата в указанный файл.
После этого все уложенные шаблоны освобождаются. Команда

#нагрузка

читает данные в файле, а затем организует их десериализацию с помощью
полученные скомпилированные шаблоны добавляются в стек шаблонов. Узор на верхней части
стек можно получить с помощью команды #pop, за которой должны следовать строки с темами
которые должны совпадать с шаблоном, заканчиваясь, как обычно, пустой строкой или концом
файл. За этой командой может следовать список модификаторов, содержащий только модификаторы управления.
которые действуют после того, как образец был скомпилирован. Особенно, шестнадцатеричный, POSIX и протолкнуть. не
разрешены, как и никакие модификаторы установки параметров. Однако модификаторы JIT разрешены.
Вот пример, который сохраняет и перезагружает два шаблона.

/ abc / push
/ xyz / push
# сохранить временный файл
# загрузить временный файл
#поп информация
хуг

#pop jit, bincode
азбука

If jitverify используется с #pop, это не означает автоматически JIT, который отличается
поведение с момента его использования в шаблоне.

Используйте pcre2test онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad




×
Реклама
❤️Совершайте покупки, бронируйте или заказывайте здесь — никаких затрат, что помогает поддерживать бесплатность услуг.