PHP - Expresiones regulares
Las expresiones regulares no son más que una secuencia o patrón de caracteres en sí. Proporcionan la base para la funcionalidad de coincidencia de patrones.
Con la expresión regular, puede buscar una cadena en particular dentro de otra cadena, puede reemplazar una cadena por otra cadena y puede dividir una cadena en muchos fragmentos.
PHP ofrece funciones específicas para dos conjuntos de funciones de expresión regular, cada una correspondiente a un cierto tipo de expresión regular. Puede utilizar cualquiera de ellos según su comodidad.
- Expresiones regulares POSIX
- Expresiones regulares de estilo PERL
Expresiones regulares POSIX
La estructura de una expresión regular POSIX no es diferente a la de una expresión aritmética típica: varios elementos (operadores) se combinan para formar expresiones más complejas.
La expresión regular más simple es aquella que coincide con un solo carácter, como g, dentro de cadenas como g, regatear o bolsa.
Démosle una explicación de algunos conceptos que se utilizan en la expresión regular POSIX. Después de eso, le presentaremos funciones relacionadas con expresiones regulares.
Soportes
Los corchetes ([]) tienen un significado especial cuando se usan en el contexto de expresiones regulares. Se utilizan para encontrar una variedad de personajes.
No Señor | Expresión y descripción |
---|---|
1 | [0-9] Coincide con cualquier dígito decimal del 0 al 9. |
2 | [a-z] Coincide con cualquier carácter desde la a minúscula hasta la z minúscula. |
3 | [A-Z] Coincide con cualquier carácter de la A mayúscula a la Z mayúscula. |
4 | [a-Z] Coincide con cualquier carácter desde minúscula a hasta mayúscula Z. |
Los rangos que se muestran arriba son generales; también puede usar el rango [0-3] para hacer coincidir cualquier dígito decimal entre 0 y 3, o el rango [bv] para hacer coincidir cualquier carácter en minúscula entre b y v.
Cuantificadores
La frecuencia o posición de las secuencias de caracteres entre corchetes y los caracteres individuales se pueden indicar mediante un carácter especial. Cada carácter especial tiene una connotación específica. El +, *,?, {Int. range} y las banderas $ siguen una secuencia de caracteres.
No Señor | Expresión y descripción |
---|---|
1 | p+ Coincide con cualquier cadena que contenga al menos una p. |
2 | p* Coincide con cualquier cadena que contenga cero o más p. |
3 | p? Coincide con cualquier cadena que contenga cero o una p. |
4 | p{N} Coincide con cualquier cadena que contenga una secuencia de N PD |
5 | p{2,3} Coincide con cualquier cadena que contenga una secuencia de dos o tres p. |
6 | p{2, } Coincide con cualquier cadena que contenga una secuencia de al menos dos p. |
7 | p$ Coincide con cualquier cadena con p al final. |
8 | ^pags Coincide con cualquier cadena con p al principio de la misma. |
Ejemplos
Los siguientes ejemplos aclararán sus conceptos sobre la coincidencia de caracteres.
No Señor | Expresión y descripción |
---|---|
1 | [^a-zA-Z] Coincide con cualquier cadena que no contenga ninguno de los caracteres que van de la A a la Z y de la A a la Z. |
2 | p.p Coincide con cualquier cadena que contenga p, seguida de cualquier carácter, seguido a su vez por otra p. |
3 | ^.{2}$ Coincide con cualquier cadena que contenga exactamente dos caracteres. |
4 | <b>(.*)</b> Coincide con cualquier cadena incluida entre <b> y </b>. |
5 | p(hp)* Coincide con cualquier cadena que contenga ap seguida de cero o más instancias de la secuencia php. |
Rangos de caracteres predefinidos
Para su conveniencia de programación, se encuentran disponibles varios rangos de caracteres predefinidos, también conocidos como clases de caracteres. Las clases de caracteres especifican un rango completo de caracteres, por ejemplo, el alfabeto o un conjunto de números enteros:
No Señor | Expresión y descripción |
---|---|
1 | [[:alpha:]] Coincide con cualquier cadena que contenga caracteres alfabéticos de la aA a la zZ. |
2 | [[:digit:]] Coincide con cualquier cadena que contenga dígitos numéricos del 0 al 9. |
3 | [[:alnum:]] Coincide con cualquier cadena que contenga caracteres alfanuméricos de aA a zZ y de 0 a 9. |
4 | [[:space:]] Coincide con cualquier cadena que contenga un espacio. |
Funciones de PHP Regexp POSIX
PHP actualmente ofrece siete funciones para buscar cadenas usando expresiones regulares de estilo POSIX:
No Señor | Función descriptiva |
---|---|
1 | ereg () La función ereg () busca una cadena especificada por cadena para una cadena especificada por patrón, devolviendo verdadero si se encuentra el patrón y falso en caso contrario. |
2 | ereg_replace () La función ereg_replace () busca la cadena especificada por patrón y reemplaza el patrón con reemplazo si se encuentra. |
3 | eregi () La función eregi () busca en una cadena especificada por patrón una cadena especificada por cadena. La búsqueda no distingue entre mayúsculas y minúsculas. |
4 | eregi_replace () La función eregi_replace () opera exactamente como ereg_replace (), excepto que la búsqueda de patrón en la cadena no distingue entre mayúsculas y minúsculas. |
5 | división() La función split () dividirá una cadena en varios elementos, los límites de cada elemento se basan en la aparición del patrón en la cadena. |
6 | spliti () La función spliti () opera exactamente de la misma manera que su hermano split (), excepto que no distingue entre mayúsculas y minúsculas. |
7 | sql_regcase () La función sql_regcase () se puede considerar como una función de utilidad, que convierte cada carácter en la cadena del parámetro de entrada en una expresión entre corchetes que contiene dos caracteres. |
Expresiones regulares de estilo PERL
Las expresiones regulares de estilo Perl son similares a sus contrapartes POSIX. La sintaxis POSIX se puede utilizar casi de forma intercambiable con las funciones de expresión regular de estilo Perl. De hecho, puede utilizar cualquiera de los cuantificadores presentados en la sección POSIX anterior.
Vamos a dar una explicación de algunos conceptos que se utilizan en las expresiones regulares PERL. Después de eso, le presentaremos funciones relacionadas con las expresiones regulares.
Meta personajes
Un metacarácter es simplemente un carácter alfabético precedido por una barra invertida que actúa para darle a la combinación un significado especial.
Por ejemplo, puede buscar grandes sumas de dinero usando el meta carácter '\ d': /([\d]+)000/, Aquí \d buscará cualquier cadena de caracteres numéricos.
A continuación se muestra la lista de metacaracteres que se pueden usar en expresiones regulares de estilo PERL.
Character Description
. a single character
\s a whitespace character (space, tab, newline)
\S non-whitespace character
\d a digit (0-9)
\D a non-digit
\w a word character (a-z, A-Z, 0-9, _)
\W a non-word character
[aeiou] matches a single character in the given set
[^aeiou] matches a single character outside the given set
(foo|bar|baz) matches any of the alternatives specified
Modificadores
Hay varios modificadores disponibles que pueden facilitar su trabajo con expresiones regulares, como la distinción entre mayúsculas y minúsculas, la búsqueda en varias líneas, etc.
Modifier Description
i Makes the match case insensitive
m Specifies that if the string has newline or carriage
return characters, the ^ and $ operators will now
match against a newline boundary, instead of a
string boundary
o Evaluates the expression only once
s Allows use of . to match a newline character
x Allows you to use white space in the expression for clarity
g Globally finds all matches
cg Allows a search to continue even after a global match fails
Funciones compatibles con PHP Regexp PERL
PHP ofrece las siguientes funciones para buscar cadenas utilizando expresiones regulares compatibles con Perl:
No Señor | Función descriptiva |
---|---|
1 | preg_match () La función preg_match () busca un patrón en la cadena, devolviendo verdadero si el patrón existe y falso en caso contrario. |
2 | preg_match_all () La función preg_match_all () coincide con todas las apariciones de patrón en cadena. |
3 | preg_replace () La función preg_replace () opera igual que ereg_replace (), excepto que se pueden usar expresiones regulares en el patrón y los parámetros de entrada de reemplazo. |
4 | preg_split () La función preg_split () opera exactamente como split (), excepto que las expresiones regulares se aceptan como parámetros de entrada para el patrón. |
5 | preg_grep () La función preg_grep () busca todos los elementos de input_array, devolviendo todos los elementos que coinciden con el patrón de expresiones regulares. |
6 | cita preg_ () Citar caracteres de expresión regular |