Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Hay alguna utilidad que convierta POSIX a PCRE para PHP? Estoy un poco confundido por el manual de PHP en PCRE, y aunque intentaré encontrar más información sobre PCRE, me preguntaba si alguien había diseñado dicha utilidad.

O, si alguien explicara cómo convertir lo siguiente, también estaría bien:

ereg("^#[01-9A-F]{6}<*>quot;, $sColor)

Pero explique cómo se hace, no solo dígame la conversión.

¿Fue útil?

Solución

preg_match("/^#[01-9A-F]{6}$/", $sColor)
En este caso solo necesita agregar los dos delimitadores.

En perl puede escribir algo como

if ( s =~ /x.+y/ )
{ print "match"; }
Como puede ver, la expresión regular real está encapsulada en //. Si desea establecer una opción en la expresión regular, póngala después de la segunda /, p. cambiar la expresión a no greedy por defecto /x.+y/U
pcre ahora emula este comportamiento. Aunque debe llamar a una función, también debe proporcionar los delimitadores y establecer las opciones después del segundo delimitador. En perl, el delimitador debe ser /, con pcre puede elegir más libremente
preg_match("/^#[01-9A-F]{6}$/", $sColor)
preg_match("!^#[01-9A-F]{6}$!", $sColor)
preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here
preg_match("^#[01-9A-F]{6}$", $sColor)
de todos modos para pcre, lo mejor es elegir un carácter que no aparezca dentro de la expresión.

Otros consejos

preg_match (" / ^ # [01-9A-F] {6} $ / D " ;, $ sColor)

Tenga en cuenta el D modificador . La gente lo olvida todo el tiempo. Sin ella, $ permitirá un carácter de nueva línea final. Una cadena como '' # 000000 \ n '' pasaría Esta es una sutil diferencia entre POSIX y PCRE.

Y, por supuesto, [01-9] puede reescribirse en [0-9] .

Por cierto, PHP admite expresiones regulares PCRE y POSIX. Aquí está la sección del manual de PHP sobre expresiones regulares POSIX, por lo que no tiene que convertirlas: http://www.php.net/manual/en/book.regex.php

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top