Este es el comando pcre2test que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
pcre2test: un programa para probar expresiones regulares compatibles con Perl.
SINOPSIS
pcre2test [opciones] [aporte presentar [producción expediente]]
pcre2test es un programa de prueba para las bibliotecas de expresiones regulares PCRE2, pero también puede ser
utilizado para experimentar con expresiones regulares. Este documento describe las características de
el programa de prueba; Para obtener detalles de las expresiones regulares en sí, consulte el patrón pcre2
documentación. Para obtener detalles sobre las llamadas a funciones de la biblioteca PCRE2 y sus opciones, consulte la
pcre2api documentación.
La entrada para pcre2test es una secuencia de patrones de expresión regular y cadenas de sujetos
para ser emparejado. También hay líneas de comando para establecer valores predeterminados y controlar algunos
acciones especiales. La salida muestra el resultado de cada intento de coincidencia. Modificadores en externos
o líneas de comando internas, los patrones y las líneas de asunto especifican la función PCRE2
opciones, controle cómo se procesa el tema y qué resultado se produce.
A medida que evolucionó la biblioteca PCRE original bastante simple, adquirió muchas características diferentes,
y como resultado, el original más perfecto programa terminó con muchas opciones en un desordenado,
sintaxis arcana, para probar todas las funciones. El cambio a la nueva API PCRE2 proporcionó una
oportunidad de volver a implementar el programa de prueba como pcre2test, con una sintaxis de modificación más limpia.
Sin embargo, todavía hay muchos modificadores oscuros, algunos de los cuales son específicamente
diseñado para su uso junto con el script de prueba y los archivos de datos que se distribuyen
como parte de PCRE2. Todos los modificadores están documentados aquí, algunos sin mucha justificación,
pero es poco probable que muchos de ellos sean útiles excepto cuando se prueban las bibliotecas.
PCRE2 8 BITS, 16-BIT Y 32-BIT BIBLIOTECAS
Se pueden construir diferentes versiones de la biblioteca PCRE2 para admitir cadenas de caracteres que son
codificado en unidades de código de 8 bits, 16 bits o 32 bits. Una, dos o las tres bibliotecas
pueden instalarse simultáneamente. los pcre2test El programa se puede utilizar para probar todos los
Bibliotecas. Sin embargo, sus propias entradas y salidas siempre están en formato de 8 bits. Al probar el
Las bibliotecas, los patrones y las cadenas temáticas de 16 o 32 bits se convierten a 16 o 32 bits
formato antes de pasar a las funciones de la biblioteca. Los resultados se vuelven a convertir a 8 bits
unidades de código para la salida.
En el resto de este documento, los nombres de las funciones y estructuras de la biblioteca se dan en
forma genérica, por ejemplo, pcre_compile (). Los nombres reales utilizados en las bibliotecas tienen un
sufijo _8, _16 o _32, según corresponda.
ENTRADA CODIFICACION
Entrada a pcre2test se procesa línea por línea, ya sea llamando a la biblioteca C fgets ()
función, oa través de la libredline biblioteca (ver más abajo). La entrada se procesa utilizando
Funciones de cadena de C, por lo que no deben contener ceros binarios, aunque en tipo Unix
ambientes, fgets () trata los bytes que no sean de nueva línea como caracteres de datos. En algunos
El carácter 26 de entornos de Windows (hex 1A) provoca un final inmediato del archivo y no más
se leen los datos.
Por lo tanto, para una máxima portabilidad, es más seguro evitar los caracteres que no se imprimen en
pcre2test archivos de entrada. Existe la posibilidad de especificar los caracteres de un patrón como
pares hexadecimales, lo que hace posible incluir ceros binarios en un patrón para
fines de prueba. Las líneas de asunto se procesan para los escapes de barra invertida, lo que hace que
posible incluir cualquier valor de datos.
COMANDO LÍNEA OPCIONES
-8 Si se ha creado la biblioteca de 8 bits, esta opción hace que se utilice (esto es
el valor por defecto). Si no se ha creado la biblioteca de 8 bits, esta opción provoca una
error.
-16 Si se ha creado la biblioteca de 16 bits, esta opción hace que se utilice. si solo
Se ha creado la biblioteca de 16 bits, este es el valor predeterminado. Si la biblioteca de 16 bits
no se ha creado, esta opción provoca un error.
-32 Si se ha creado la biblioteca de 32 bits, esta opción hace que se utilice. si solo
Se ha creado la biblioteca de 32 bits, este es el valor predeterminado. Si la biblioteca de 32 bits
no se ha creado, esta opción provoca un error.
-b Compórtate como si cada patrón tuviera el / fullbincode modificador; el interno completo
La forma binaria del patrón se emite después de la compilación.
-C Genere el número de versión de la biblioteca PCRE2 y toda la información disponible
acerca de las funciones opcionales que se incluyen, y luego salir sin salida
código. Todas las demás opciones se ignoran.
-C opción Genere información sobre una opción específica en tiempo de compilación y luego salga. Esta
La funcionalidad está pensada para su uso en scripts como ejecutar prueba. El seguimiento
Las opciones generan el valor y establecen el código de salida como se indica:
ebcdic-nl el código para LF (= NL) en un entorno EBCDIC:
0x15 o 0x25
0 si se utiliza en un entorno ASCII
el código de salida es siempre 0
linkize el tamaño del enlace interno configurado (2, 3 o 4)
El código de salida se establece en el tamaño del enlace.
newline la configuración de nueva línea predeterminada:
CR, LF, CRLF, ANYCRLF o ANY
el código de salida es siempre 0
bsr la configuración predeterminada para lo que coincide con \ R:
ANYCRLF o CUALQUIER
el código de salida es siempre 0
Las siguientes opciones dan como resultado 1 para verdadero o 0 para falso, y establecen el código de salida en
el mismo valor:
Se admite barra invertida-C \ C (no bloqueada)
ebcdic compilado para un entorno EBCDIC
El soporte jit justo a tiempo está disponible
pcre2-16 se construyó la biblioteca de 16 bits
pcre2-32 se construyó la biblioteca de 32 bits
pcre2-8 se construyó la biblioteca de 8 bits
Unicode Soporte Unicode disponible
Si se proporciona una opción desconocida, se emite un mensaje de error; el código de salida es 0.
-d Compórtate como si cada patrón tuviera el depurar modificador; la forma interna y
la información sobre el patrón compilado se envía después de la compilación; -d is
equivalente a -b -i.
-dfa Comportarse como si cada línea de asunto tuviera el DFA modificador; la coincidencia se realiza utilizando el
pcre2_dfa_match () función en lugar de la predeterminada pcre2_match ().
-ayuda Genere un breve resumen de estas opciones y luego salga.
-i Compórtate como si cada patrón tuviera el / info modificador; información sobre el compilado
el patrón se proporciona después de la compilación.
-jit Compórtate como si cada línea de patrón tuviera la jit modificador; después de exitoso
compilación, cada patrón se pasa al compilador justo a tiempo, si está disponible.
-patrón lista de modificadores
Compórtate como si cada línea de patrón contuviera los modificadores dados.
-q No muestre el número de versión de pcre2test al inicio de la ejecución.
-S tamaño En sistemas similares a Unix, establezca el tamaño de la pila de tiempo de ejecución en tamaño megabytes
-tema lista de modificadores
Compórtate como si cada línea de asunto contuviera los modificadores dados.
-t Ejecute cada compilación y haga coincidir muchas veces con un temporizador, y genere el resultado
veces por compilación o coincidencia. Cuando se utiliza JIT, se dan tiempos separados para
compilación inicial y compilación JIT. Puedes controlar el número de iteraciones
que se utilizan para medir el tiempo siguiendo -t con un número (como un elemento separado en
la línea de comando). Por ejemplo, "-t 1000" se repite 1000 veces. El valor predeterminado es
iterar 500,000 veces.
-tm Esto es como -t excepto que solo mide el tiempo de la fase de coincidencia, no la de compilación
fase.
-T -TM Estos se comportan como -t y -tm, pero además, al final de una carrera, el total
se generan los tiempos para todas las compilaciones y coincidencias.
-versión Imprima el número de versión de PCRE2 y luego salga.
DESCRIPCIÓN
If pcre2test se le dan dos argumentos de nombre de archivo, lee desde el primero y escribe en el
segundo. Si el nombre es "-", la entrada se toma de la entrada estándar. Si pcre2test is
dado solo un argumento, lee de ese archivo y escribe en stdout. De lo contrario, lee
desde stdin y escribe en stdout.
¿Cuándo? pcre2test está construido, una opción de configuración puede especificar que se debe vincular con
la libredline or libitar Biblioteca. Cuando se hace esto, si la entrada es de un terminal,
se lee usando el readline () función. Esto proporciona funciones de edición de líneas e historial.
La salida del -ayuda la opción indica si o no readline () se utilizará.
El programa maneja cualquier número de pruebas, cada una de las cuales consta de un conjunto de líneas de entrada.
Cada conjunto comienza con un patrón de expresión regular, seguido de cualquier número de líneas de asunto.
coincidir con ese patrón. Entre conjuntos de datos de prueba, las líneas de comando que comienzan
con # puede aparecer. Este formato de archivo, con algunas restricciones, también puede ser procesado por el
perltest.sh script que se distribuye con PCRE2 como un medio de comprobar que el
El comportamiento de PCRE2 y Perl es el mismo.
Cuando la entrada es un terminal, pcre2test mensajes para cada línea de entrada, usando "re>" para
solicitar patrones de expresión regular y "datos>" para solicitar líneas de asunto. Mando
las líneas que comienzan con # solo se pueden ingresar en respuesta al mensaje "re>".
Cada línea de asunto se empareja por separado e independientemente. Si quieres hacer multilínea
coincidencias, tienes que usar la secuencia de escape \ n (o \ r o \ r \ n, etc., dependiendo de la
configuración de nueva línea) en una sola línea de entrada para codificar las secuencias de nueva línea. No hay
límite en la longitud de las líneas de asunto; el búfer de entrada se amplía automáticamente si es
demasiado pequeña. Hay funciones de replicación que permiten generar largos
patrón repetitivo o líneas de asunto sin tener que proporcionarlos explícitamente.
Una línea vacía o el final del archivo indica el final de las líneas de asunto de una prueba, en
en qué punto se espera un nuevo patrón o línea de comando si todavía hay una entrada para leer.
COMANDO LÍNEAS
Entre conjuntos de datos de prueba, una línea que comienza con # se interpreta como una línea de comando.
Si el primer carácter va seguido de un espacio en blanco o un signo de exclamación, la línea es
tratado como un comentario e ignorado. De lo contrario, se reconocen los siguientes comandos:
#prohibir_utf
Los patrones posteriores tienen automáticamente las opciones PCRE2_NEVER_UTF y PCRE2_NEVER_UCP
set, que bloquea el uso de las opciones PCRE2_UTF y PCRE2_UCP y el uso de (* UTF)
y (* UCP) al inicio de los patrones. Este comando también fuerza un error si un
patrón contiene cualquier aparición de \ P, \ p o \ X, que aún se admiten cuando
PCRE2_UTF no está establecido, pero requiere que se incluya el soporte de propiedad Unicode en el
biblioteca.
Este es un gatillo que se utiliza en archivos de prueba para garantizar que la propiedad UTF o Unicode
Las pruebas no se agregan accidentalmente a los archivos que se utilizan cuando el soporte Unicode no es
incluido en la biblioteca. Establecer PCRE2_NEVER_UTF y PCRE2_NEVER_UCP como predeterminados también puede
ser obtenido mediante el uso de #modelo; la diferencia es que #prohibir_utf no se puede desarmar,
y las opciones automáticas no se muestran en la información del patrón, para evitar el desorden
salida de prueba.
#carga
Este comando se usa para cargar un conjunto de patrones precompilados desde un archivo, como se describe en
la sección titulada "Guardar y restaurar patrones compilados" a continuación.
#newline_default [ ]
Cuando se crea PCRE2, se puede especificar una convención de nueva línea predeterminada. Esto determina cual
Los caracteres y / o pares de caracteres se reconocen como indicativos de una nueva línea en un patrón o
cadena de asunto. El valor predeterminado se puede anular cuando se compila un patrón. El estandar
Los archivos de prueba contienen pruebas de varias convenciones de nueva línea, pero la mayoría de las pruebas
Espere que un solo salto de línea se reconozca como una nueva línea de forma predeterminada. Sin acción especial
las pruebas fallarían cuando PCRE2 se compila con CR o CRLF como línea nueva predeterminada.
El comando #newline_default especifica una lista de tipos de nueva línea que son aceptables como
defecto. Los tipos deben ser CR, LF, CRLF, ANYCRLF o ANY (en mayúsculas o minúsculas),
por ejemplo:
#newline_default LF Cualquiera anyCRLF
Si la nueva línea predeterminada está en la lista, este comando no tiene ningún efecto. De lo contrario, excepto cuando
probar la API POSIX, una nueva línea modificador que especifica la primera convención de nueva línea en
la lista (LF en el ejemplo anterior) se agrega a cualquier patrón que aún no tenga un
nueva línea modificador. Si la lista de nueva línea está vacía, la función está desactivada. Este comando es
presente en varios archivos de entrada de prueba estándar.
Cuando se prueba la API POSIX, no hay forma de anular la nueva línea predeterminada
convención, aunque es posible establecer la convención de nueva línea desde dentro del patrón. A
se da una advertencia si el POSIX El modificador se usa cuando #nuevalínea_predeterminada establecería un valor predeterminado
para la API que no es POSIX.
#patrón
Este comando establece una lista de modificadores predeterminada que se aplica a todos los patrones posteriores.
Los modificadores de un patrón pueden cambiar estos ajustes.
#perltest
La aparición de esta línea hace que se comprueben todas las configuraciones posteriores del modificador.
compatibilidad con el perltest.sh script, que se utiliza para confirmar que Perl proporciona el
mismos resultados que PCRE2. Además, aparte de las líneas de comentarios, ninguna de las otras líneas de comando es
permitido, porque ellos y muchos de los modificadores son especficos para pcre2test, y debería
no ser utilizado en archivos de prueba que también son procesados por perltest.sh. #perltest comando
ayuda a detectar pruebas que se colocan accidentalmente en el archivo incorrecto.
#música pop [ ]
Este comando se utiliza para manipular la pila de patrones compilados, como se describe en la
sección titulada "Guardar y restaurar patrones compilados" a continuación.
#ahorrar
Este comando se utiliza para guardar un conjunto de patrones compilados en un archivo, como se describe en la
sección titulada "Guardar y restaurar patrones compilados" a continuación.
#tema
Este comando establece una lista de modificadores predeterminada que se aplica a todas las líneas de asunto posteriores.
Los modificadores en una línea de asunto pueden cambiar esta configuración.
CAMBIO SINTAXIS
Las listas de modificadores se utilizan tanto con el patrón como con las líneas de asunto. Los elementos de una lista están separados
por comas seguidas de un espacio en blanco opcional. El espacio en blanco final en una lista de modificadores es
ignorado. Se pueden dar algunos modificadores tanto para patrones como para líneas de asunto, mientras que otros
son válidos solo para uno u otro. Cada modificador tiene un nombre largo, por ejemplo
"anclado", y algunos de ellos deben ir seguidos de un signo igual y un valor, por ejemplo,
"desplazamiento = 12". Los valores no pueden contener comas, pero pueden contener espacios. Modificadores
que no toman valores pueden ir precedidos de un signo menos para desactivar una configuración anterior.
Algunos de los modificadores más comunes también se pueden especificar como letras simples, por ejemplo
"i" para "sin mayúsculas". En la documentación, siguiendo la convención de Perl, estos están escritos
con una barra ("el modificador / i") para mayor claridad. Los modificadores abreviados deben ser
concatenados en el primer elemento de una lista de modificadores. Si el primer elemento no se reconoce como
un nombre de modificador largo, se interpreta como una secuencia de estas abreviaturas. Por ejemplo:
/ abc / ig, nueva línea = cr, jit = 3
Esta es una línea de patrón cuya lista de modificadores comienza con dos modificadores de una letra (/ i y
/gramo). Los modificadores abreviados en minúsculas son los mismos que se utilizan en Perl.
PATRÓN SINTAXIS
Una línea de patrón debe comenzar con uno de los siguientes caracteres (símbolos comunes, excluyendo
patrón de metacaracteres):
/! "'` - = _:;,% & @ ~
Esto se interpreta como delimitador del patrón. Una expresión regular puede continuar
varias líneas de entrada, en cuyo caso se incluyen los caracteres de nueva línea. Está
posible incluir el delimitador dentro del patrón escapándolo con una barra invertida, para
(aqui)
/a B C D e F/
Si hace esto, el escape y el delimitador forman parte del patrón, pero como el
Los delimitadores son todos no alfanuméricos, esto no afecta su interpretación. Si el
El delimitador de terminación es seguido inmediatamente por una barra invertida, por ejemplo,
/a B C/\
luego se agrega una barra invertida al final del patrón. Esto se hace para proporcionar una forma de
probar la condición de error que surge si un patrón termina con una barra invertida, porque
/a B C\/
se interpreta como la primera línea de un patrón que comienza con "abc /", lo que provoca que pcre2test
para leer la siguiente línea como una continuación de la expresión regular.
Un patrón puede ir seguido de una lista de modificadores (detalles a continuación).
TEMA LÍNEA SINTAXIS
Antes de que cada línea de asunto se pase a pcre2_match () or pcre2_dfa_match (), liderando y
Se eliminan los espacios en blanco finales y se escanea la línea en busca de escapes de barra invertida. los
lo siguiente proporciona un medio para codificar caracteres que no se imprimen de manera visible:
\ una alarma (BEL, \ x07)
\ b retroceso (\ x08)
\ e escapar (\ x27)
\ f avance de formulario (\ x0c)
\ n nueva línea (\ x0a)
\ r retorno de carro (\ x0d)
pestaña \ t (\ x09)
\ v pestaña vertical (\ x0b)
\ nnn carácter octal (hasta 3 dígitos octales); siempre
un byte a menos que> 255 en UTF-8 o en modo de 16 o 32 bits
\ o {dd ...} carácter octal (cualquier número de dígitos octales}
\ xhh byte hexadecimal (hasta 2 dígitos hexadecimales)
\ x {hh ...} carácter hexadecimal (cualquier número de dígitos hexadecimales)
El uso de \ x {hh ...} no depende del uso de la utf modificador en el patrón. Está
reconocido siempre. Puede haber cualquier número de dígitos hexadecimales dentro de las llaves;
los valores no válidos provocan mensajes de error.
Tenga en cuenta que \ xhh especifica un byte en lugar de un carácter en el modo UTF-8; esto lo hace
posible construir secuencias UTF-8 no válidas con fines de prueba. Por otra parte,
\ x {hh} se interpreta como un carácter UTF-8 en modo UTF-8, generando más de un byte si
el valor es mayor que 127. Al probar la biblioteca de 8 bits que no está en modo UTF-8, \ x {hh}
genera un byte para valores inferiores a 256 y provoca un error para valores mayores.
En el modo UTF-16, se aceptan todos los valores \ x {hhhh} de 4 dígitos. Esto hace posible
Construya secuencias UTF-16 no válidas con fines de prueba.
En el modo UTF-32, se aceptan todos los valores \ x {...} de 4 a 8 dígitos. Esto hace posible
Construya secuencias UTF-32 no válidas con fines de prueba.
Hay una secuencia de barra invertida especial que especifica la replicación de uno o más
personajes:
\ [ ] { }
Esto hace posible probar cadenas largas sin tener que proporcionarlas como parte del
archivo. Por ejemplo:
\ [abc] {4}
se convierte en "abcabcabcabc". Esta función no admite el anidamiento. Para incluir un
cerrando corchetes en los caracteres, codifíquelo como \ x5D.
Una barra invertida seguida de un signo igual marca el final de la cadena de asunto y el inicio
de una lista de modificadores. Por ejemplo:
abc \ = notbol, notempty
Si la cadena de asunto está vacía y \ = va seguida de un espacio en blanco, la línea se trata como una
línea de comentario, y no se utiliza para hacer coincidir. Por ejemplo:
\ = Este es un comentario.
abc \ = Esta es una lista de modificadores no válida.
Una barra invertida seguida de cualquier otro carácter no alfanumérico simplemente escapa a ese carácter.
Una barra invertida seguida de cualquier otra cosa provoca un error. Sin embargo, si el último personaje
en la línea hay una barra invertida (y no hay una lista de modificadores), se ignora. Esto da un
forma de pasar una línea vacía como datos, ya que una línea vacía real termina la entrada de datos.
PATRÓN MODIFICADORES
Hay varios tipos de modificadores que pueden aparecer en las líneas del patrón. Excepto donde se indique
a continuación, también se pueden utilizar en #modelo comandos. La lista de modificadores de un patrón puede agregar o
anular los modificadores predeterminados que fueron establecidos por un anterior #modelo mando.
Configuración compilación opciones
Los siguientes modificadores establecen opciones para pcre2_compile (). Los más comunes tienen un solo
abreviaturas de letras. Ver pcre2api para obtener una descripción de sus efectos.
allow_empty_class establece PCRE2_ALLOW_EMPTY_CLASS
alt_bsux establece PCRE2_ALT_BSUX
alt_circumflex conjunto PCRE2_ALT_CIRCUMFLEX
alt_verbnames establecido PCRE2_ALT_VERBNAMES
conjunto anclado PCRE2_ANCHORED
auto_callout establece PCRE2_AUTO_CALLOUT
/ i conjunto sin carcasa PCRE2_CASELESS
dollar_endsolo establecer PCRE2_DOLLAR_ENDONLY
/ s dotall conjunto PCRE2_DOTALL
dupnames establecido PCRE2_DUPNAMES
/ x conjunto extendido PCRE2_EXTENDED
conjunto de primera línea PCRE2_FIRSTLINE
match_unset_backref establecer PCRE2_MATCH_UNSET_BACKREF
/ m conjunto multilínea PCRE2_MULTILINE
never_backlash_c set PCRE2_NEVER_BACKSLASH_C
never_ucp establecer PCRE2_NEVER_UCP
never_utf establece PCRE2_NEVER_UTF
no_auto_capture establecer PCRE2_NO_AUTO_CAPTURE
no_auto_possess establece PCRE2_NO_AUTO_POSSESS
no_dotstar_anchor establecer PCRE2_NO_DOTSTAR_ANCHOR
no_start_optimize establecer PCRE2_NO_START_OPTIMIZE
no_utf_check establecer PCRE2_NO_UTF_CHECK
ucp conjunto PCRE2_UCP
conjunto desagradable PCRE2_UNGREEDY
use_offset_limit establecer PCRE2_USE_OFFSET_LIMIT
utf establece PCRE2_UTF
Además de activar la opción PCRE2_UTF, el utf El modificador provoca que no se impriman
caracteres en las cadenas de salida que se imprimirán utilizando la notación \ x {hh ...}. De lo contrario, esos
menos de 0x100 se imprimen en hexadecimal sin las llaves.
Configuración compilación controles
Los siguientes modificadores afectan el proceso de compilación o solicitan información sobre el
patrón:
bsr = [anycrlf | unicode] especificar el manejo de \ R
/ B bincode muestra código binario sin longitudes
callout_info mostrar información de llamada
depurar igual que info, fullbincode
fullbincode muestra código binario con longitudes
/ I info muestro información sobre el patrón compilado
el patrón hexadecimal está codificado en hexadecimal
jit [= ] utilizar JIT
jitfast usa la ruta rápida JIT
jitverify verificar el uso de JIT
locale = usar esta configuración regional
max_pattern_length = establecer la longitud máxima del patrón
memoria mostrar memoria usada
nueva línea = establecer el tipo de nueva línea
null_context compilar con un contexto NULL
parens_nest_limit = establecer la profundidad máxima de paréntesis
posix usa la API POSIX
empujar empujar patrón compilado en la pila
stackguard = probar la función stackguard
tablas = [0 | 1 | 2] seleccionar tablas internas
Los efectos de estos modificadores se describen en las siguientes secciones.
Nueva línea y \R manipulación
La pestaña bsr modificador especifica qué \ R en un patrón debe coincidir. Si se establece en "anycrlf",
\ R solo coincide con CR, LF o CRLF. Si se establece en "unicode", \ R coincide con cualquier nueva línea Unicode
secuencia. El valor predeterminado se especifica cuando se construye PCRE2, siendo el valor predeterminado
Unicode
La pestaña nueva línea El modificador especifica qué caracteres se interpretarán como líneas nuevas, tanto en
el patrón y en las líneas de asunto. El tipo debe ser CR, LF, CRLF, ANYCRLF o ANY
(en mayúsculas o minúsculas).
Info de seguridad para el hogar a patrón
La pestaña depurar modifier es una abreviatura de info, fullbincode, solicitando todos los disponibles
La pestaña código binario El modificador hace que se genere una representación del código compilado después de
Compilacion. Esta información no contiene valores de longitud y desplazamiento, lo que garantiza
que se genera la misma salida para diferentes tamaños de enlaces internos y diferentes códigos
anchos de unidad. Mediante el uso código binario, las mismas pruebas de regresión se pueden utilizar en diferentes
.
La pestaña código de enlace completo modificador, por el contrario, sí incluir valores de longitud y desplazamiento. Esto se usa
en algunas pruebas especiales que se ejecutan solo para anchos de unidad de código y tamaños de enlace específicos, y es
también es útil para pruebas puntuales.
La pestaña info El modificador solicita información sobre el patrón compilado (si está anclado,
tiene un primer carácter fijo, y así sucesivamente). La información se obtiene del
pcre2_pattern_info () función. A continuación se muestran algunos ejemplos típicos:
re> / (? i) (^ a | ^ b) / m, información
Capturando el recuento de subpatrones = 1
Opciones de compilación: multilínea
Opciones generales: multilínea sin caja
Primera unidad de código al inicio o después de la nueva línea
Límite inferior de la longitud del sujeto = 1
re> / (? i) abc / info
Capturando el recuento de subpatrones = 0
Opciones de compilación:
Opciones generales: sin carcasa
Primera unidad de código = 'a' (sin mayúsculas y minúsculas)
Última unidad de código = 'c' (sin mayúsculas y minúsculas)
Límite inferior de la longitud del sujeto = 3
Las "opciones de compilación" son las especificadas por modificadores; las "opciones generales" tienen opciones agregadas
que se toman o se deducen del patrón. Si ambos conjuntos de opciones son iguales, solo un
se emite una sola línea de "opciones"; si no hay opciones, se omite la línea. "Primer código
unidad "es donde debe comenzar cualquier coincidencia; si hay más de una, se enumeran como
"unidades de código de inicio". "Última unidad de código" es la última unidad de código literal que debe estar presente
en cualquier partido. Este no es necesariamente el último personaje. Estas líneas se omiten si no
se registran las unidades de código inicial o final.
La pestaña información_de_llamada El modificador solicita información sobre todas las llamadas del patrón. A
la lista de ellos se emite al final de cualquier otra información que se solicite. Para cada
llamada, se da su número o cadena, seguido del elemento que lo sigue en el
patrón.
Pasando (Paso) a NULL contexto
Normalmente, pcre2test pasa un bloque de contexto a pcre2_compile (). Si el contexto_nulo
se establece el modificador, sin embargo, se pasa NULL. Esto es para probar que pcre2_compile () se comporta
correctamente en este caso (utiliza valores predeterminados).
Especificación a patrón in hexagonal
La pestaña hexagonal modificador especifica que los caracteres del patrón deben interpretarse como
pares de dígitos hexadecimales. Se permiten espacios en blanco entre pares. Por ejemplo:
/ ab 32 59 / hex
Esta función se proporciona como una forma de crear patrones que contienen cero binario y otros
caracteres que no se imprimen. Por defecto, pcre2test pasa patrones como cadenas terminadas en cero
a pcre2_compile (), dando la longitud como PCRE2_ZERO_TERMINATED. Sin embargo, para patrones
especificado en hexadecimal, se pasa la longitud real del patrón.
Generación long repetitivo .
Algunas pruebas utilizan patrones largos que son muy repetitivos. En lugar de crear una muy larga
línea de entrada para dicho patrón, puede utilizar una función de repetición especial, similar a la
uno descrito para las líneas de asunto arriba. Si el expandir el modificador está presente en un patrón,
partes del patrón que tienen la forma
\ [ ] { }
se expanden antes de que el patrón se pase a pcre2_compile (). Por ejemplo, \ [AB] {6000} es
ampliado a "ABAB ..." 6000 veces. Esta construcción no se puede anidar. Una inicial "\["
La secuencia se reconoce solo si "] {" seguido de dígitos decimales y "}" se encuentra más adelante en
el patrón. De lo contrario, los caracteres permanecen inalterados en el patrón.
Si parte de un patrón expandido parece una expansión, pero en realidad es parte del patrón
patrón, la expansión no deseada se puede evitar dando dos valores en el cuantificador. Para
ejemplo, \ [AB] {6000,6000} no se reconoce como un elemento de expansión.
Si info El modificador se establece en un patrón expandido, el resultado de la expansión es
incluido en la información que se emite.
JIT compilación
La compilación Just-In-Time (JIT) es una optimización de gran peso que puede acelerar enormemente
la coincidencia de patrones. Ver el pcre2jit documentación para más detalles. La compilación JIT ocurre,
opcionalmente, después de que un patrón se haya compilado con éxito en un formulario interno. El JIT
El compilador lo convierte en código de máquina optimizado. Necesita saber si el tiempo del partido
se utilizarán las opciones PCRE2_PARTIAL_HARD y PCRE2_PARTIAL_SOFT, porque se
se genera código para los diferentes casos. Ver el parcialmente modificador en "Modificadores de sujeto"
a continuación para obtener detalles sobre cómo se especifican estas opciones para cada intento de coincidencia.
La compilación JIT es solicitada por el / jit modificador de patrón, que opcionalmente puede ser
seguido de un signo igual y un número en el rango de 0 a 7. Los tres bits que componen
el número especifica cuál de los tres modos de funcionamiento JIT se compilará:
1 compilar código JIT para coincidencias no parciales
2 compile el código JIT para la coincidencia parcial suave
4 compile el código JIT para una coincidencia parcial completa
Los posibles valores para el / jit modificador son por lo tanto:
0 deshabilitar JIT
1 coincidencia normal solamente
2 coincidencia parcial suave solamente
3 emparejamiento parcial normal y suave
4 coincidencia parcial dura solamente
6 emparejamiento parcial suave y duro solamente
7 los tres modos
Si no se proporciona ningún número, se supone 7. La frase "coincidencia parcial" significa una llamada a
pcre2_match () con el conjunto de opciones PCRE2_PARTIAL_SOFT o PCRE2_PARTIAL_HARD.
Tenga en cuenta que tal llamada puede devolver una coincidencia completa; las opciones permiten la posibilidad de un
coincidencia parcial, pero no lo requiera. Tenga en cuenta también que si solicita solo la compilación JIT
para la coincidencia parcial (por ejemplo, / jit = 2) pero no establezca el parcialmente modificador en un
línea de asunto, esa coincidencia no usará código JIT porque ninguno fue compilado para no parcial
pareo.
Si la compilación JIT tiene éxito, el código JIT compilado se utilizará automáticamente cuando
se ejecuta el tipo apropiado de coincidencia, excepto cuando se especifican opciones de tiempo de ejecución incompatibles.
Para obtener más detalles, consulte la pcre2jit documentación. Ver también el pila de jits modificador a continuación para
una forma de establecer el tamaño de la pila JIT.
Si rápido se especifica el modificador, la coincidencia se realiza mediante la "ruta rápida" JIT
interfaz, pcre2_jit_match (), que omite algunas de las comprobaciones de cordura que realiza
pcre2_match ()y, por supuesto, no funciona cuando no se admite JIT. Si rápido is
especificado sin jit, se supone jit = 7.
Si verificar se especifica el modificador, la información sobre el patrón compilado muestra
si la compilación JIT tuvo éxito o no. Si verificar se especifica sin jit,
Se asume jit = 7. Si la compilación JIT tiene éxito cuando verificar está configurado, el texto "(JIT)"
se agrega a la primera línea de salida después de una coincidencia o no coincidencia cuando el código compilado JIT fue
realmente utilizado en el partido.
Configuración a local
La pestaña /lugar El modificador debe especificar el nombre de una configuración regional, por ejemplo:
/ patrón / locale = fr_FR
La configuración regional dada está configurada, pcre2_maketables () se llama para construir un conjunto de tablas de caracteres
para la configuración regional, y esto luego se pasa a pcre2_compile () al compilar el regular
expresión. Se utilizan las mismas tablas al hacer coincidir las siguientes líneas de asunto. los
/lugar El modificador se aplica solo al patrón en el que aparece, pero se puede dar en un
#modelo comando si se necesita un valor predeterminado. Establecer una configuración regional y tablas de caracteres alternativos
son mutuamente excluyentes.
Demostración patrón memoria
La pestaña /memoria modificador hace que el tamaño en bytes de la memoria utilizada para contener el compilado
patrón que se imprimirá. Esto no incluye el tamaño del código_pcre2 cuadra; es sólo
los datos compilados reales. Si el patrón se pasa posteriormente al compilador JIT, el
también se muestra el tamaño del código compilado JIT. Aquí hay un ejemplo:
re> / a (b) c / jit, memoria
Asignación de memoria (espacio de código): 21
Asignación de memoria (código JIT): 1910
Limitar ocupación anidado paréntesis
La pestaña parents_nest_limit El modificador establece un límite en la profundidad de los paréntesis anidados en un
patrón. Romper el límite provoca un error de compilación. El valor predeterminado de la biblioteca es
se configura cuando se construye PCRE2, pero pcre2test establece su propio valor predeterminado de 220, que es necesario para
ejecutando el conjunto de pruebas estándar.
Limitar ocupación la patrón de largo
La pestaña longitud_patrón_max El modificador establece un límite, en unidades de código, a la longitud del patrón que
pcre2_compile () Va a aceptar. Romper el límite provoca un error de compilación. El valor por defecto
es el número más grande que puede contener una variable PCRE2_SIZE (esencialmente ilimitado).
Usando la POSIX envoltura API
La pestaña / posix causas del modificador pcre2test para llamar a PCRE2 a través de la API de envoltura POSIX en lugar de
su API nativa. Esto solo admite la biblioteca de 8 bits. Tenga en cuenta que no implica POSIX
semántica coincidente; para más detalles vea el pcre2posix documentación. Cuando la API POSIX
se está utilizando, los siguientes modificadores de patrón establecen opciones para el regcomp () función:
sin caja REG_ICASE
multilínea REG_NEWLINE
no_auto_capture REG_NOSUB
dotall REG_DOTALL)
ungreedy REG_UNGREEDY) Estas opciones no forman parte de
ucp REG_UCP) el estándar POSIX
utf REG_UTF8)
La pestaña regular_buffsize modificador especifica un tamaño para el búfer de error que se pasa a
regerror () en caso de error de compilación. Por ejemplo:
/ abc / posix, regerror_buffsize = 20
Esto proporciona un medio para probar el comportamiento de regerror () cuando el búfer es demasiado pequeño
para el mensaje de error. Si no se ha establecido este modificador, se utiliza un búfer grande.
La pestaña texto posterior y todo el texto posterior los modificadores de sujeto funcionan como se describe a continuación. Todos los demás
los modificadores provocan un error.
Pruebas la montón característica
La pestaña / stackguard El modificador se usa para probar el uso de pcre2_set_compile_recursion_guard (),
función que se proporciona para permitir que se verifique la disponibilidad de la pila durante la compilación
(Véase el pcre2api documentación para más detalles). Si el número especificado por el modificador es
mayor que cero, pcre2_set_compile_recursion_guard () se llama para configurar la devolución de llamada desde
pcre2_compile () a una función local. El argumento que recibe es el anidamiento actual.
profundidad de paréntesis; si esto es mayor que el valor dado por el modificador, distinto de cero es
devuelto, provocando que se anule la compilación.
Usando alternativa personaje TABURETES
El valor especificado para el /mesas El modificador debe ser uno de los dígitos 0, 1 o 2. Se
hace que un conjunto específico de tablas de caracteres incorporadas se pase a pcre2_compile (). Esto
se utiliza en las pruebas PCRE2 para comprobar el comportamiento con diferentes tablas de caracteres. El digito
especifica las tablas de la siguiente manera:
0 no pasa ninguna tabla de caracteres especiales
1 las tablas ASCII predeterminadas, distribuidas en
pcre2_chartables.c.dist
2 un conjunto de tablas que definen los caracteres ISO 8859
En la tabla 2, algunos caracteres cuyos códigos son superiores a 128 se identifican como letras,
dígitos, espacios, etc. La configuración de tablas de caracteres alternativos y una configuración regional se
exclusiva.
Configuración a ciertos partido controles
Los siguientes modificadores son realmente modificadores de sujeto y se describen a continuación. Sin embargo,
pueden incluirse en la lista de modificadores de un patrón, en cuyo caso se aplican a cada
línea de asunto que se procesa con ese patrón. Puede que no aparezcan en #modelo
comandos. Estos modificadores no afectan el proceso de compilación.
texto posterior mostrar texto después de la coincidencia
todo el texto posterior muestra el texto después de las capturas
todas las capturas muestran todas las capturas
allusedtext muestra todo el texto consultado
/ g coincidencia global global
marca mostrar valores de marca
reemplazar = especificar una cadena de reemplazo
startchar muestra el carácter inicial cuando sea relevante
sustituto_uso extendido PCRE2_SUBSTITUTE_EXTENDED
replace_overflow_length use PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
replace_unknown_unset use PCRE2_SUBSTITUTE_UNKNOWN_UNSET
replace_unset_empty use PCRE2_SUBSTITUTE_UNSET_EMPTY
Estos modificadores pueden no aparecer en un #modelo mando. Si los quiere como predeterminados, establezca
ellos en un #tema mando.
Ahorrar a compilado patrón
Cuando un patrón con el empuje El modificador se compila con éxito, se inserta en una pila
de patrones compilados, y pcre2test espera que la siguiente línea contenga un nuevo patrón (o un
comando) en lugar de una línea de asunto. Esta función se utiliza al guardar patrones compilados en
un archivo, como se describe en la sección titulada "Guardar y restaurar patrones compilados"
abajo. los empuje modifier es incompatible con modificadores de compilación como global que
actuar a la hora del partido. Cualquiera que se especifique se ignora, con un mensaje de advertencia, excepto para
reemplazar, lo que provoca un error. Tenga en cuenta que, verificar, que está permitido, no lleva
hasta cualquier coincidencia posterior que utilice este patrón.
TEMA MODIFICADORES
Los modificadores que pueden aparecer en las líneas de asunto y #tema comando son de dos tipos.
Configuración partido opciones
Los siguientes modificadores establecen opciones para pcre2_match () or pcre2_dfa_match (). Vea pcreapi
para obtener una descripción de sus efectos.
conjunto anclado PCRE2_ANCHORED
dfa_restart establecer PCRE2_DFA_RESTART
conjunto dfa_shortest PCRE2_DFA_SHORTEST
no_utf_check establecer PCRE2_NO_UTF_CHECK
conjunto de notbol PCRE2_NOTBOL
conjunto vacío PCRE2_NOTEMPTY
notempty_atstart establecer PCRE2_NOTEMPTY_ATSTART
conjunto de noteol PCRE2_NOTEOL
Parcial_hard (o ph) establece PCRE2_PARTIAL_HARD
parcial_soft (o ps) establece PCRE2_PARTIAL_SOFT
Los modificadores de coincidencia parcial se proporcionan con abreviaturas porque aparecen
con frecuencia en las pruebas.
Si / posix El modificador estaba presente en el patrón, lo que provocó que la API de envoltura POSIX fuera
utilizado, los únicos modificadores de configuración de opciones que tienen algún efecto son Notbol, no vacío y
notaol, haciendo que REG_NOTBOL, REG_NOTEMPTY y REG_NOTEOL, respectivamente, se pasen a
regexec (). Cualquier otro modificador provocará un error.
Configuración partido controles
Los siguientes modificadores afectan el proceso de comparación o solicitan información adicional.
Algunos de ellos también se pueden especificar en una línea de patrón (ver arriba), en cuyo caso se aplican
a cada línea de asunto que coincida con ese patrón.
texto posterior mostrar texto después de la coincidencia
todo el texto posterior muestra el texto después de las capturas
todas las capturas muestran todas las capturas
allusedtext muestra todo el texto consultado (solo no JIT)
coincidencia global alternativa altglobal
callout_capture muestra las capturas en el momento de la llamada
callout_data = establecer un valor para pasar a través de llamadas
callout_fail = [: ] control de error de llamada
callout_none no proporciona una función de llamada
copiar = copiar subcadena capturada
uso de dfa pcre2_dfa_match ()
find_limits encuentra límites de coincidencia y recursividad
get = extraer subcadena capturada
getall extraer todas las subcadenas capturadas
/ g coincidencia global global
jitstack = establecer el tamaño de la pila JIT
marca mostrar valores de marca
match_limit = establecer un límite de coincidencia
memoria muestra el uso de la memoria
Coincidencia de null_context con un contexto NULL
offset = establecer el desplazamiento inicial
offset_limit = establecer límite de compensación
ovector = establecer el tamaño del vector de salida
recursión_limit = establecer un límite de recursividad
reemplazar = especificar una cadena de reemplazo
startchar mostrar startchar cuando sea relevante
startoffset = igual que offset =
replace_extedded use PCRE2_SUBSTITUTE_EXTENDED
replace_overflow_length use PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
replace_unknown_unset use PCRE2_SUBSTITUTE_UNKNOWN_UNSET
replace_unset_empty use PCRE2_SUBSTITUTE_UNSET_EMPTY
zero_terminate pasar el sujeto como terminado en cero
Los efectos de estos modificadores se describen en las siguientes secciones.
Demostración más texto
La pestaña texto posterior El modificador solicita que, además de generar la parte de la cadena de asunto
que coincidía con todo el patrón, pcre2test Además, debería generar el resto del
cadena de asunto. Esto es útil para las pruebas en las que el sujeto contiene varias copias del
misma subcadena. los todo el texto posterior El modificador solicita la misma acción para las subcadenas capturadas.
así como la subcadena principal emparejada. En cada caso, el resto se emite en el
la siguiente línea con un carácter más después del número de captura.
La pestaña texto usado El modificador solicita que todo el texto que fue consultado durante una exitosa
El intérprete debe mostrar la coincidencia de patrones. Esta función no es compatible con JIT
coincidente, y si se solicita con JIT, se ignora (con un mensaje de advertencia). Configurando esto
El modificador afecta la salida si hay una búsqueda hacia atrás al comienzo de una partida, o una
mirar hacia adelante al final, o si se usa \ K en el patrón. Caracteres que preceden o siguen
el inicio y el final de la coincidencia real se indican en la salida con los caracteres '<' o '>'
debajo de ellos. Aquí hay un ejemplo:
re> / (? <= pqr) abc (? = xyz) /
datos> 123pqrabcxyz456 \ = allusedtext
0: pqrabcxyz
<<< >>>
Esto muestra que la cadena coincidente es "abc", con las cadenas anterior y siguiente
"pqr" y "xyz" habiendo sido consultados durante el partido (al procesar las afirmaciones).
La pestaña iniciarchar El modificador solicita que se indique el carácter inicial de la partida, si
es diferente al comienzo de la cadena coincidente. El único momento en que esto ocurre es cuando
\ K se ha procesado como parte de la coincidencia. En esta situación, la salida de la coincidencia
La cadena se muestra desde el carácter inicial en lugar de desde el punto de coincidencia, con
caracteres circunflejos debajo de los caracteres anteriores. Por ejemplo:
re> / abc \ Kxyz /
datos> abcxyz \ = startchar
0: abcxyz
^^^
Diferente a los texto usado, iniciarchar El modificador se puede utilizar con JIT. Sin embargo, estos dos
los modificadores son mutuamente excluyentes.
Demostración la valor of que todas capturar grupos
La pestaña todas las capturas El modificador solicita que los valores de todos los paréntesis capturados potenciales sean
salida después de un partido. De forma predeterminada, solo aquellos hasta el más alto que se utilizan realmente en el
coinciden se emiten (correspondientes al código de retorno de pcre2_match ()). Grupos que lo hicieron
no participar en el partido se emiten como " ".
Pruebas rótulos
Se proporciona una función de llamada cuando pcre2test llama a las funciones de coincidencia de la biblioteca, a menos que
llamada_none está especificado. Si llamada_captura está configurado, los grupos capturados actuales son
salida cuando se produce una llamada.
La pestaña llamada_fail El modificador puede tener uno o dos números. Si solo hay un número, 1
se devuelve en lugar de 0 cuando se alcanza una llamada de ese número. Si dos números son
dado, se devuelve 1 cuando se llama se alcanza para el la vez. Tenga en cuenta que los rótulos
con argumentos de cadena siempre se les da el número cero. Consulte "Leyendas" a continuación para
descripción de la salida cuando se tomó una llamada.
La pestaña datos_de_llamada al modificador se le puede dar un número sin signo o negativo. Esto se establece como
los "datos de usuario" que se pasan a la función coincidente y se devuelven cuando la llamada
se invoca la función. Cualquier valor distinto de cero se utiliza como retorno de pcre2test's
función de llamada.
Encontrar que todas cerillas in a cadena
La búsqueda de todas las coincidencias posibles dentro de un tema puede ser solicitada por el global or
/ altglobal modificador. Después de encontrar una coincidencia, se vuelve a llamar a la función de coincidencia para
busque el resto del tema. La diferencia entre global y altglobal es que
el primero usa el inicio_compensación argumento para pcre2_match () or pcre2_dfa_match () para iniciar
buscar en un nuevo punto dentro de toda la cadena (que es lo que hace Perl), mientras que
último pasa por encima de un tema abreviado. Esto hace una diferencia en el proceso de emparejamiento si
el patrón comienza con una afirmación retrospectiva (que incluye \ b o \ B).
Si una cadena vacía coincide, la siguiente coincidencia se realiza con PCRE2_NOTEMPTY_ATSTART y
Conjunto de banderas PCRE2_ANCHORED, para buscar otra coincidencia, no vacía, en el mismo
punto en el tema. Si esta coincidencia falla, el desplazamiento de inicio avanza y el valor normal
se reintenta la coincidencia. Esto imita la forma en que Perl maneja tales casos cuando se utiliza la /g modificador
o en el separar() función. Normalmente, el desplazamiento de inicio avanza un carácter, pero si
la convención de nueva línea reconoce CRLF como una nueva línea, y el carácter actual es CR
seguido de LF, se produce un avance de dos caracteres.
Pruebas subcadena Extracción funciones
La pestaña copia y get Los modificadores se pueden utilizar para probar el pcre2_substring_copy_xxx () y
pcre2_substring_get_xxx () funciones. Se pueden administrar más de una vez y cada uno puede
especifique un nombre o número de grupo, por ejemplo:
abcd \ = copiar = 1, copiar = 3, obtener = G1
Si #tema El comando se usa para configurar la copia predeterminada y / o obtener listas, estas se pueden desarmar
especificando un número negativo para cancelar todos los grupos numerados y un nombre vacío para cancelar
todos los grupos nombrados.
La pestaña obtener toda pruebas de modificadores pcre2_substring_list_get (), que extrae todos los capturados
subcadenas.
Si la línea de asunto coincide correctamente, las subcadenas extraídas por la conveniencia
las funciones se generan con C, G o L después del número de cadena en lugar de dos puntos. Este es
además de la lista completa normal. La longitud de la cadena (es decir, el retorno de la
función de extracción) se da entre paréntesis después de cada subcadena, seguida del nombre
cuando la extracción fue por su nombre.
Pruebas la sustitución función
Si reemplazar se establece el modificador, el pcre2_substitute () se llama a la función en lugar de una
de las funciones coincidentes. Tenga en cuenta que las cadenas de reemplazo no pueden contener comas, porque un
coma significa el final de un modificador. No se cree que esto sea un problema en una prueba.
.
A diferencia de las cadenas de sujetos, pcre2test no procesa cadenas de reemplazo para escape
secuencias. En el modo UTF, se comprueba una cadena de reemplazo para ver si es un UTF-8 válido
cuerda. Si es así, se convierte correctamente en una cadena UTF de la unidad de código adecuada.
ancho. Si no es una cadena UTF-8 válida, las unidades de código individuales se copian directamente.
Esto proporciona un medio para pasar una cadena UTF-8 no válida con fines de prueba.
Los siguientes modificadores establecen opciones (además de las opciones de coincidencia normales) para
pcre2_substitute ():
PCRE2_SUBSTITUTE_GLOBAL global
sustituto_extendido PCRE2_SUBSTITUTE_EXTENDED
replace_overflow_length PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
sustituto_desconocido_desarmado PCRE2_SUBSTITUTE_UNKNOWN_UNSET
replace_unset_empty PCRE2_SUBSTITUTE_UNSET_EMPTY
Después de una sustitución exitosa, se emite la cadena modificada, precedida por el número de
reemplazos. Esto puede ser cero si no hay coincidencias. A continuación se muestra un ejemplo sencillo de
prueba de sustitución:
/ abc / replace = xxx
= abc = abc =
1: = xxx = abc =
= abc = abc = \ = global
2: = xxx = xxx =
Las cadenas de asunto y de reemplazo deben mantenerse relativamente cortas (menos de 256
caracteres) para las pruebas de sustitución, ya que se utilizan búferes de tamaño fijo. Para que sea fácil
prueba de desbordamiento del búfer, si la cadena de reemplazo comienza con un número en cuadrado
corchetes, ese número se pasa a pcre2_substitute () como el tamaño del búfer de salida,
con la cadena de reemplazo comenzando en el siguiente carácter. Aquí hay un ejemplo que prueba
el caso de borde:
/a B C/
123abc123 \ = reemplazar = [10] XYZ
1: 123XYZ123
123abc123 \ = reemplazar = [9] XYZ
Falló: error -47: no hay más memoria
La acción predeterminada de pcre2_substitute () es devolver PCRE2_ERROR_NOMEMORY cuando la salida
el búfer es demasiado pequeño. Sin embargo, si la opción PCRE2_SUBSTITUTE_OVERFLOW_LENGTH está configurada (por
utilizando el longitud_desbordamiento_sustituto modificador), pcre2_substitute () sigue pasando por
los movimientos de emparejamiento y sustitución, con el fin de calcular el tamaño del búfer que es
requerido. Cuando esto pasa, pcre2test muestra la longitud de búfer requerida (que incluye
espacio para el cero final) como parte del mensaje de error. Por ejemplo:
/ abc / substitute_overflow_length
123abc123 \ = reemplazar = [9] XYZ
Falló: error -47: no más memoria: se necesitan 10 unidades de código
Una cadena de reemplazo se ignora con la coincidencia POSIX y DFA. Especificar coincidencia parcial
provoca un retorno de error ("valor de opción incorrecto") de pcre2_substitute ().
Configuración la JIT montón tamaño
La pestaña pila de jits El modificador proporciona una forma de establecer el tamaño máximo de pila que utiliza el
código de optimización justo a tiempo. Se ignora si no se utiliza la optimización JIT. los
el valor es un número de kilobytes. Proporcionar una pila que sea más grande que la 32K predeterminada es
necesario solo para patrones muy complicados.
Configuración partido y recursividad límites
La pestaña límite_de_coincidencia y límite_recursion Los modificadores establecen los límites apropiados en el partido.
contexto. Estos valores se ignoran cuando el encontrar_limites se especifica el modificador.
Encontrar mínimo límites
Si encontrar_limites el modificador está presente, pcre2test llamadas pcre2_match () varias veces,
establecer diferentes valores en el contexto de la coincidencia a través de pcre2_set_match_limit () y
pcre2_set_recursion_limit () hasta que encuentre los valores mínimos para cada parámetro que
permitir pcre2_match () para completar sin error.
Si se utiliza JIT, solo es relevante el límite de coincidencia. Si se utiliza la coincidencia de DFA,
ninguno de los límites es relevante y este modificador se ignora (con un mensaje de advertencia).
La pestaña límite_de_coincidencia El número es una medida de la cantidad de retroceso que tiene lugar, y
aprender el valor mínimo puede ser instructivo. Para las coincidencias más simples, el número es
bastante pequeño, pero para patrones con un gran número de posibilidades de coincidencia, puede
se agrandan muy rápidamente al aumentar la longitud de la cadena del sujeto. los
coincidencia_límite_recursión número es una medida de la cantidad de pila (o, si PCRE2 se compila con
NO_RECURSE, cuánta memoria) se necesita para completar el intento de coincidencia.
Demostración MARCA nombres
La pestaña marca El modificador hace que los nombres retrocedan verbos de control que se devuelven
llamadas a pcre2_match () para ser mostrado. Si se devuelve una marca para una coincidencia, no coincidencia o
coincidencia parcial, pcre2test lo muestra. Para un partido, está en una línea por sí mismo, etiquetado con
"MK:". De lo contrario, se agrega al mensaje de no coincidencia.
Demostración memoria personal
La pestaña memoria causas del modificador pcre2test para registrar toda la asignación de memoria y liberar llamadas que
ocurrir durante una operación de partido.
Configuración a comenzando el desplazamiento
La pestaña el desplazamiento El modificador establece un desplazamiento en la cadena de asunto en el que comienza la coincidencia. Su
el valor es un número de unidades de código, no caracteres.
Configuración an el desplazamiento límitar
La pestaña límite_compensación El modificador establece un límite para las coincidencias no ancladas. Si no se puede encontrar una coincidencia
comenzando en o antes de este desplazamiento en el tema, se da un retorno de "no coincidencia". Los datos
el valor es un número de unidades de código, no caracteres. Cuando se usa este modificador, el
use_offset_limit se debe haber establecido un modificador para el patrón; si no, es un error
generado.
Configuración la tamaño of la salida vector
La pestaña ovector El modificador se aplica solo a la línea de asunto en la que aparece, aunque de
Por supuesto, también se puede utilizar para establecer un valor predeterminado en un #tema mando. Especifica el número
de pares de compensaciones que están disponibles para almacenar información coincidente. El valor predeterminado es
15.
Un valor de cero es útil cuando se prueba la API POSIX porque causa regexec () para ser
llamado con un vector de captura NULL. Cuando no se prueba la API POSIX, se usa un valor de cero
causar pcre2_match_data_create_from_pattern () ser llamado, para crear una coincidencia
bloque de exactamente el tamaño correcto para el patrón. (No es posible crear una coincidencia
bloque con un horno de longitud cero; siempre hay al menos un par de compensaciones).
Pasando (Paso) la sujeto as terminado en cero
De forma predeterminada, la cadena de asunto se pasa a una función de coincidencia de API nativa con su
longitud correcta. Para probar la facilidad para pasar una cadena terminada en cero, el
cero_terminar se proporciona el modificador. Hace que la longitud se pase como
PCRE2_ZERO_TERMINATED. (Cuando se empareja a través de la interfaz POSIX, este modificador no tiene
efecto, ya que no hay facilidad para pasar un tramo.)
Al probar pcre2_substitute (), este modificador también tiene el efecto de pasar el
cadena de reemplazo como terminada en cero.
Pasando (Paso) a NULL contexto
Normalmente, pcre2test pasa un bloque de contexto a pcre2_match (), pcre2_dfa_match () or
pcre2_jit_match (). Si el contexto_nulo se establece el modificador, sin embargo, se pasa NULL. Este es
para probar que las funciones coincidentes se comportan correctamente en este caso (utilizan valores predeterminados
valores). Este modificador no se puede utilizar con el encontrar_limites modificador o al probar el
función de sustitución.
Las ALTERNATIVA PAREO FUNCIÓN
Por defecto, pcre2test utiliza la función de coincidencia estándar PCRE2, pcre2_match () para que coincida con
cada línea de asunto. PCRE2 también admite una función de coincidencia alternativa,
pcre2_dfa_match (), que opera de manera diferente y tiene algunas restricciones. los
Las diferencias entre las dos funciones se describen en el pcre2matching documentación.
Si DFA se establece el modificador, se utiliza la función de coincidencia alternativa. Esta función
encuentra todas las coincidencias posibles en un punto dado del tema. Sin embargo, si el dfa_más corto
se establece el modificador, el procesamiento se detiene después de que se encuentra la primera coincidencia. Este es siempre el
coincidencia más corta posible.
DEFAULT SALIDA DESDE pcre2test
Esta sección describe la salida cuando la función de coincidencia normal, pcre2_match (), es
siendo utilizado.
Cuando un partido tiene éxito, pcre2test genera la lista de subcadenas capturadas, comenzando con
número 0 para la cuerda que coincidía con el patrón completo. De lo contrario, genera "No coincide"
cuando el resultado es PCRE2_ERROR_NOMATCH, o "Coincidencia parcial:" seguido de la
subcadena coincidente cuando el retorno es PCRE2_ERROR_PARTIAL. (Tenga en cuenta que este es el
subcadena que se inspeccionó durante la coincidencia parcial; puede incluir personajes antes
el inicio de la coincidencia real si se involucró una aserción de búsqueda retrospectiva, \ K, \ b o \ B).
Para cualquier otra devolución, pcre2test emite el número de error negativo PCRE2 y un corto
frase descriptiva. Si el error es una verificación de cadena UTF fallida, el desplazamiento de la unidad de código del
también se emite el inicio del carácter anómalo. A continuación, se muestra un ejemplo de un
pcre2test huye.
$pcre2prueba
PCRE2 versión 9.00 2014-05-10
re> / ^ abc (\ d +) /
datos> abc123
0: abc123
1: 123
datos> xyz
Sin coincidencia
Las subcadenas de captura no definidas que no van seguidas de una definida no se muestran mediante
pcre2test a menos que el todas las capturas se especifica el modificador. En el siguiente ejemplo, hay
son dos subcadenas de captura, pero cuando la primera línea de datos coincide, la segunda se desarma
no se muestra la subcadena. Una subcadena no definida "interna" se muestra como " ", En cuanto a
segunda línea de datos.
re> / (a) | (b) /
datos> a
0: una
1: una
datos> b
0: segundo
1:
2: segundo
Si las cadenas contienen caracteres que no se imprimen, se emiten como escape \ xhh si el
El valor es menor que 256 y el modo UTF no está configurado. De lo contrario, se emiten como \ x {hh ...}
escapa. Consulte a continuación la definición de caracteres que no se imprimen. Si el / texto posterior
se establece el modificador, la salida para la subcadena 0 es seguida por el resto del sujeto
cadena, identificada por "0+" así:
re> / gato / texto posterior
datos> catarata
0: gato
0+ ártico
Si se solicita una coincidencia global, los resultados de los sucesivos intentos de coincidencia se muestran en
secuencia, como esta:
re> / \ Bi (\ w \ w) / g
datos> Mississippi
0: es
1: ss
0: es
1: ss
0: ipp
1: págs
Sólo se emite "Sin coincidencia" si falla el primer intento de coincidencia. A continuación se muestra un ejemplo de
mensaje de falla (el desplazamiento 4 que es especificado por el el desplazamiento modificador ha pasado el final de
la cadena de asunto):
re> / xyz /
datos> xyz \ = desplazamiento = 4
Error -24 (valor de compensación incorrecto)
Tenga en cuenta que, si bien los patrones se pueden continuar en varias líneas (se utiliza un símbolo ">" simple
para continuaciones), es posible que las líneas de asunto no. Sin embargo, se pueden incluir nuevas líneas en un tema
por medio del escape \ n (o \ r, \ r \ n, etc., dependiendo de la configuración de secuencia de nueva línea).
SALIDA DESDE Las ALTERNATIVA PAREO FUNCIÓN
Cuando la función de coincidencia alternativa, pcre2_dfa_match (), se utiliza, la salida consta de
una lista de todas las coincidencias que comienzan en el primer punto del tema donde hay un
al menos un partido. Por ejemplo:
re> / (espiga | mandarina | bronceado) /
datos> mandarina amarilla \ = dfa
0: mandarina
1: espiga
2: bronceado
El uso de la función de coincidencia normal en estos datos solo encuentra "tang". La coincidencia más larga
La cadena siempre se da primero (y se numera como cero). Después de una devolución PCRE2_ERROR_PARTIAL, el
la salida es "Coincidencia parcial:", seguida de la subcadena que coincide parcialmente. Tenga en cuenta que esto
es la subcadena completa que se inspeccionó durante la coincidencia parcial; puede incluir
caracteres antes de que comience la coincidencia real si una aserción retrospectiva, \ b, o \ B fue
involucrado. (\ K no es compatible con la coincidencia de DFA).
Si se solicita una coincidencia global, la búsqueda de más coincidencias se reanuda al final de la
partido más largo. Por ejemplo:
re> / (espiga | mandarina | bronceado) / g
datos> mandarina amarilla y sultana picante \ = dfa
0: mandarina
1: espiga
2: bronceado
0: espiga
1: bronceado
0: bronceado
La función de coincidencia alternativa no admite la captura de subcadenas, por lo que los modificadores
que se ocupan de las subcadenas capturadas no son relevantes.
REINICIANDO DESPUÉS DE A PARCIAL PARTIDO
Cuando la función de coincidencia alternativa ha dado el retorno PCRE2_ERROR_PARTIAL,
indicando que el sujeto coincide parcialmente con el patrón, puede reiniciar la coincidencia con
datos adicionales del sujeto mediante el dfa_restart modificador. Por ejemplo:
re> / ^ \ d? \ d (jan | feb | mar | apr | may | jun | jul | aug | sep | oct | nov | dic) \ d \ d $ /
datos> 23ja \ = P, dfa
Partido parcial: 23ja
datos> n05 \ = dfa, dfa_restart
0:n05
Para obtener más información sobre la coincidencia parcial, consulte la pcre2parcial documentación.
LLAMADAS
Si el patrón contiene alguna solicitud de llamada, pcre2testse llama a la función de llamada
durante el emparejamiento a menos que llamada_none está especificado. Esto funciona tanto con la coincidencia
funciones.
La función de llamada en pcre2test devuelve cero (continuar con la coincidencia) de forma predeterminada, pero puede
Usar una llamada_fail modificador en una línea de asunto (como se describe arriba) para cambiar esto y
otros parámetros de la llamada.
Insertar leyendas puede resultar útil al utilizar pcre2test para comprobar complicado regular
Expresiones Para obtener más información sobre las leyendas, consulte la pcre2llamada documentación.
La salida para llamadas con argumentos numéricos y aquellas con argumentos de cadena es
ligeramente diferente.
Llamadas con numérico argumentos
De forma predeterminada, la función de llamada muestra el número de llamada, el inicio y el actual
posiciones en el texto del tema en el momento de la llamada y el siguiente elemento de patrón que se probará.
Por ejemplo:
---> pqrabcdef
0 ^ ^ \ d
Esta salida indica que el número de llamada 0 ocurrió para un intento de coincidencia comenzando en el
cuarto carácter de la cadena de asunto, cuando el puntero estaba en el séptimo carácter, y
cuando el siguiente elemento del patrón fue \ d. Solo se emite un circunflejo si el inicio y la corriente
las posiciones son las mismas.
Se asume que las llamadas numeradas 255 son llamadas automáticas, insertadas como resultado de la
/ auto_callout modificador de patrón. En este caso, en lugar de mostrar el número de llamada, el
Se emite un desplazamiento en el patrón, precedido por un signo más. Por ejemplo:
re> / \ d? [AE] \ * / auto_callout
datos> E *
---> E *
+0 ^ \ d?
+3 ^ [AE]
+8 ^^ \ *
+10 ^ ^
0: E *
Si un patrón contiene elementos (* MARK), se genera una línea adicional cada vez que se cambia
La última marca se pasa a la función de llamada. Por ejemplo:
re> / a (* MARK: X) bc / auto_callout
datos> abc
---> abc
+0^a
+1 ^^ (* MARCA: X)
+10 ^^ segundo
Última nota: X
+11 ^ ^ c
+12 ^ ^
0: abc
La marca cambia entre coincidir con "a" y "b", pero permanece igual durante el resto de los
coincidir, por lo que no se emite nada más. Si, como resultado del retroceso, la marca vuelve a
estando desarmado, el texto " "es salida.
Llamadas con cadena argumentos
La salida para una llamada con un argumento de cadena es similar, excepto que en lugar de
emitir un número de llamada antes de los indicadores de posición, la cadena de llamada y su
Los desplazamientos en la cadena de patrón se emiten antes del reflejo de la cadena del sujeto, y
la cadena de asunto se refleja para cada llamada. Por ejemplo:
re> / ^ ab (? C'primero ') cd (? C "segundo") ef /
datos> abcdefg
Rótulo (7): 'primero'
---> abcdefg
^ ^ do
Llamada (20): "segundo"
---> abcdefg
^ ^ mi
0: abcdef
NO IMPRIMIR CARACTERES
¿Cuándo? pcre2test está generando texto en la versión compilada de un patrón, bytes distintos de
32-126 siempre se tratan como caracteres que no se imprimen y, por lo tanto, se muestran como hexadecimales.
escapa.
¿Cuándo? pcre2test está generando texto que es una parte coincidente de una cadena de asunto, se comporta
de la misma manera, a menos que se haya establecido una configuración regional diferente para el patrón (usando el /lugar
modificador). En este caso, el isprint () La función se utiliza para distinguir la impresión y no
impresión de caracteres.
AHORRO Y RESTAURANDO COMPILADO PATRONES
Es posible guardar patrones compilados en un disco o en otro lugar y volver a cargarlos más tarde,
sujeto a una serie de restricciones. Los datos JIT no se pueden guardar. El anfitrión en el que
los patrones se recargan deben estar ejecutando la misma versión de PCRE2, con la misma unidad de código
width, y también debe tener el mismo endianness, puntero ancho y tipo PCRE2_SIZE. Antes
Los patrones compilados se pueden guardar, deben serializarse, es decir, convertirse en un flujo de
bytes. Una secuencia de un solo byte puede contener cualquier número de patrones compilados, pero todos deben
utilice las mismas tablas de caracteres. Se incluye una única copia de las tablas en el flujo de bytes.
(su tamaño es 1088 bytes).
Las funciones cuyos nombres comienzan con pcre2_serialize_ se utilizan para serializar y descomprimir
serializando. Se describen en el pcre2 serializar documentación. En esta sección
describir las características de pcre2test que se puede utilizar para probar estas funciones.
Cuando un patrón con empuje El modificador se compila correctamente, se inserta en una pila de
patrones compilados, y pcre2test espera que la siguiente línea contenga un nuevo patrón (o
comando) en lugar de una línea de asunto. De esta manera, se pueden compilar varios patrones
y retenido. El empuje el modificador es incompatible con POSIXy modificadores de control que actúan
en el momento del partido se ignoran (con un mensaje). El verificar el modificador se aplica solo en la compilación
hora. El comando
#ahorrar
hace que todos los patrones apilados se serialicen y el resultado se escriba en el archivo nombrado.
Posteriormente, se liberan todos los patrones apilados. El comando
#carga
lee los datos del archivo y, a continuación, hace los arreglos para que se deserialice, con el
patrones compilados resultantes agregados a la pila de patrones. El patrón en la parte superior del
La pila se puede recuperar con el comando #pop, que debe ir seguido de líneas de asuntos.
que deben coincidir con el patrón, terminados como de costumbre por una línea vacía o al final de
Archivo. Este comando puede ir seguido de una lista de modificadores que solo contenga modificadores de control.
que actúan después de que se ha compilado un patrón. En particular, hexagonal, POSIX y empuje no son
permitido, ni tampoco modificadores de configuración de opciones. Sin embargo, se permiten los modificadores JIT.
Aquí hay un ejemplo que guarda y recarga dos patrones.
/ abc / empujar
/ xyz / empujar
#guardar archivo temporal
#cargar archivo temporal
# información pop
xyz
#pop jit, bincode
abecedario
If verificar se usa con #pop, no implica automáticamente jit, Que es diferente
comportamiento de cuando se usa en un patrón.
Utilice pcre2test en línea utilizando los servicios de onworks.net
