Son imprescindibles para mí, si puedo usarlas, las uso, y si no puedo usarlas, me desespero. Las uso cuando programo siempre que puedo, en Javascript y PHP sobre todo, porque Java las incluyó a partir de J2SE 1.4 y ¡oh, grandes misterios de la humanidad! no sé por qué se empeñan en mi trabajo en usar una versión anterior, con lo que me quedo sin poder hacer un simple replace en un String (que no sea a nivel de char, claro). Las uso en editores de texto: Programmers Notepad 2 las usa bastante bien, aunque el mejor es EditPlus 2 (lo siento, no me gusta el UltraEdit).
¿Qué son?, pues como dicen en la Wikipedia:
Una expresión regular es una forma de representar a los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje. [...] Una expresión regular es, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos.
Esto es un tanto críptico, aunque es una gran definición, como toda la entrada en la Wikipedia. Pero para que se entienda mejor, yo preguntaría: ¿para qué se usan?, para trabajar con cadenas de texto.
<< Ocultar resto
Son agrupaciones de texto que representan varias cadenas de texto, suelen ir encerradas entre barras '/' en algunos lenguajes (Javascript, PHP, ...) y aunque a simple vista parece código encriptado, son fáciles de seguir. Se forman por la unión de texto normal (letras, numeros, signos, ...) y por operadores, que son cadenas de texto concretas que tienen un significado y una función.
Estos operadores son fijos y pueden modificar el significado, agrupar contenidos, dar altenativa a contenidos, ... Los más frecuentes son:
\ | | Escapa los caracteres especiales para tratarlos como texto normal |
. | | Representa a cualquier carácter |
? | | El elemento anterior es opcional |
+ | | El elemento anterior se repite una o más veces |
* | | El elemento anterior no aparece, aparece o se repite varias veces |
| | | Alternativa entre el carácter anterior y posterior |
^ | | Representa el inicio de línea |
$ | | Representa el fin de línea |
\s | | Representa un espacio en blanco |
\S | | Representa cualquier carácter menos un espacio en blanco |
\d | | Representa un dígito |
\D | | Representa cualquier carácter menos un dígito |
\w | | Representa un carácter alfanumérico |
\W | | Representa cualquier carácter menos uno alfanumérico |
\n | | Nueva línea |
\r | | Salto de línea |
\t | | Tabulador |
{n} | | Indica que el caracter anterior se debe repetir n veces |
(..) | | Agrupa elementos |
[..] | | Conjunto de caracteres admitidos |
[^..] | | Conjunto de caracteres no admitidos |
- | | Crea un rango de valores entre el carácter anterior y el posterior |
Quizás con unos ejemplos se vea mejor:
- Queremos representar las cadenas de texto amigos y amigo: /amigos?/
- Queremos representar el formato de fecha DD/MM/AAAA: /[0-9]{2}\/\d{2}\/[0-9]{4}/
[0-9] representa un número del 0 al 9, {2} indica que tiene que haber dos números, \/ representa la barra '/', \d es lo mismo que [0-9]
Aplicaciones en el día a día:
- Comprobar en una página web que el dato que se mete en un input es una fecha (DD/MM/YYYY) mediante Javascript:
function esFecha(texto) {
var regexp = new RegExp("(([0-2][0-9])|(3[01]))\/((0[0-9])|(1[0-2]))\/\d{4}");
return texto.match(regexp);
}
- Dividir un texto en partes usando como separador un espacio en blanco, un guión o un punto y coma:
$lista = split("[\s-;]", texto);
- Realizar un trim a una cadena de texto en Javascript:
texto.replace(/(^\s*)|(\s*$)/g, "");
Espero que si desconocías las expresiones regulares, te hayan enganchado, y si ya las conocías, que sigas con ellas.
7 Comentarios:
Esto de las expresiones regulares he visto que es ampliamente usado y puede llegar a expresiones sumamente complejas.
saludos
Mario
PD. No se si recibas pedidos :D pero si conoces de un código javascript para contar palabras sería genial. Yo encontré un par pero ninguno me convenció 100%, lo necesité porque le quise agregar a mi blog una info por post de "tiempo de lectura", y lo hice pero tiene cierto margen de error. saludos.
Por Anónimo, a las 2/12/2006 12:35:00 p. m.
Hola, pues no recibo peticiones porque entre otras cosas eres el primero que me pide algo, pero nada, que luego me pongo a hacer un script para contar palabras ;-) y te lo pongo. Eso sí,
Saludos
Por Anónimo, a las 2/12/2006 02:56:00 p. m.
es tan facil como hacer esto:
cadena="hola esto es un texto";
var aTemp=cadena.split(" ");
alert(aTemp.length);
con eso ya tienes la cuenta de palabras :)
saludos!
Por Anónimo, a las 3/16/2006 06:58:00 p. m.
No es tan sencillo como eso, porque por ejemplo, este texto:
"Esto es una prueba.
Luis"
Si hacemos un split con el espacio, nos darían solo 4 elementos:
"Esto", "es", "una" "Prueba.\nLuis"
cuando realmente hay 5 palabras.
Por Anónimo, a las 3/16/2006 08:48:00 p. m.
Pero en el caso de los split si previamente hacen un replace a los saltos de linea por espacios quedaría todo en una gran cadena y si sería válido....
Por guillexd, a las 6/08/2007 02:39:00 p. m.
Cierto, pero también te pueden meter un tabulador, hay que tener en cuenta todas esas cosas.
Pero vamos, lo que dices es correcto, cambiarlo mediante replace y split, pero teniendo en cuenta todo.
Lo que pasa es que las expresiones regulares lo hacen más sencillo, o al menos corto.
Saludos
Por Anónimo, a las 6/08/2007 04:19:00 p. m.
son buena las expreciones regulares, pero recuerda que en php consume muchos recursos de CPU, yo las uso mucho tambien, pero solo como ultimo recurso O_O! te lo digo como experiencia
Por Anónimo, a las 7/23/2010 12:55:00 a. m.
Publicar un comentario
<< Inicio