php - ¿Qué significan las construcciones / H, / V y / N?
regex java-8 (1)
/H
coincide con cualquier cosa que no sea un espacio en blanco horizontal. Esto incluye el carácter de tabulación y todos los caracteres Unicode "separadores de espacio". Esto es lo mismo que:
[^/h] or
[^/t/p{Zs}]
/V
es la clase negada de /v
: se denomina "carácter de espacio en blanco no vertical" y coincide con cualquier carácter que no sea un carácter de espacio en blanco vertical de aquellos que se tratan como saltos de línea en el estándar de Unicode y que coincidan con /v
, y es lo mismo que lo siguiente como se introdujo en Perl 5:
[^/v] or
[^/n/cK/f/r/x85/x{2028}/x{2029}]
/N
coincide con cualquier carácter que no sea el carácter de avance de línea /n
. ¡Sencillo!
[^/n]
¿Cuál es la diferencia entre /V+
y /N+
? Gracias a Avinash Raj por preguntar.
Como Perl 5.10 se especifica en la documentación, /V
es lo mismo que [^/n/cK/f/r/x85/x{2028}/x{2029}]
y no debe coincidir con ninguno de /n
, /r
o /f
, así como Ctrl+(Control char)
(* nix), 0x2028
, 0x2028
y 0x2029
.
Estas clases de caracteres son útiles e increíblemente efectivas para cuando desea hacer coincidir todo dentro del texto horizontal - /V+
- o simplemente consumir un párrafo completo - /N+
- entre otros casos de uso.
Las siguientes implementaciones admiten /H
, /V
y /N
:
- Perl 5.10
- PCRE 7.2
- Los programadores de PHP pueden encontrar una discrepancia sobre qué versiones son compatibles con estas construcciones. Como provienen de Perl 5, uno tiene que configurar la versión PCRE en su lugar; Puedes verificar esto usando
phpinfo()
. Por defecto, PHP 5.2.2 hace. - Java 8
java.util.regex.Pattern
soporte para las construcciones/H
y/V
se ha agregado como parte de la implementación de/h
,/v
, que no era cierto para Java 7 , sin embargo,/N
todavía no es compatible. Probado con JDK8u25.
Las siguientes construcciones no están bien documentadas, pero funcionan a partir de versiones específicas de PHP en adelante; ¿Cuáles son estas versiones, cuáles son estas construcciones y qué otras implementaciones lo admiten?
/H
-
/V
-
/N
Este hilo es parte de The Stack Overflow Regex Reference .