Expresiones Regulares (¿o Regular Expressions?)
La verdad, no sabía dónde poner esto así que lo he metido en "Varios".
El tema es que últimamente estoy escuchando y leyendo muchas veces lo de las "expresiones regulares" y las "regular expressions" (que digo yo que son lo mismo, ¿no?). Creo que sé lo que es: un lenguaje que permite definir patrones o plantillas para búsquedas o introducción de texto. Algo así como la BNF, ¿o no? Pues eso, ¿dónde puedo aprender qué es y cómo utilizar expresiones regulares, tanto con las funciones/objetos que pueda tener Delphi como con otras librerías/lenguajes (especialmente Pascal, C y PHP), utilidades com grep y tal? ¿Qué ventajas tiene? ¿Existen alternativas? |
¿Ninguna ayudita? No me digan que no saben nada de esto, que no me lo creo, ¿eh? ;)
|
Hola, pues yo tampoco tengo ni idea de lo que son y por lo que leo en el ClubDelphi, todo el mundo habla maravillas de ello.
Y como no la Wikipedia tiene la solucion: Expresión regular Tambien buscando un poco por los foros he encontrado un par de hilos que quiza puedan ser interesantes: Regexp... ?? Guia de herramientas para programadores! Así que nos toca empezar a leer. Espero sirva para empezar Saludos |
Gracias Bisho.
¡Cuándo aprenderé que hay que usar los buscadores antes de hacer preguntas tontas!:o |
Cita:
Es coña, eh? En cuanto a lo de las preguntas tontas, no dicen algo así como no hay mayor ignorante que el que no pregunta? Tu ya has preguntado y ya sabes algo más no? Además la pregunta no ha sido tonta, a mí me ha servido para (además de ponerme a buscar :rolleyes: ) para aprender algo nuevo. Saludos |
Ya teneís links "más profesionales", aquí solo expongo una idea general para saber si es lo que necesitaís o no.
-El propio delphi tiene rutinas para crear expresiones regulares. - Lex es una analizador léxico (que tiene una versión en delphi) - Yacc es un analizador sintáctico (que tambien existe en version delphi) ¿Y qué demonios son analizadores lexico/sintactico? analizador lexico: Código:
[a..z]+ : mostrar('el usuario ha escrito al menos una letra desde la a a la z'); [a..z]+ es lo que se llama una expresión regular, que se validará solo cuando el usuario pulse una o más letras pertenecientes al rango a..z Analizador sintáctico: Es el encargado de verificar el orden en el que se han escrito las palabras. Si el usuario escribe : "Señor Estimado:" no debe saltar el asistente de office, porque no se ha escrito en el orden correcto. Este analizador sólo se encarga del Orden, por ejemplo: Código:
Sacar_Asistente_ si: "Estimado señor:" o bien Por cierto, ¿como creeís que se obtienen las partes de un SQL? SELECT nombrecampos FROM nombretablas WHERE condiciones HAVING ... ORDER BY A través de un Parser se buscan los tokens (palabras reservadas SELECT, FROM, WHERE,ect) y se validan sin son correctas sintácticamente o no. Saludos |
Para entender de qué van las expresiones regulares quizá te sirva este mensaje y si no, por lo menos el tutorial que enlazo al final del mismo. Se trata de las expresiones regulares tipo P_E_R_L (o sea, las que se usan en P_E_R_L) que son muy populares. El tutorial en cuestión, es para el uso de las expresiones en PHP aunque es buena introducción general.
En cuanto a: Cita:
Y en cuanto a esto: Cita:
// Saludos |
Muchas gracias Lepe y Roman por sus lecciones magistrales y sus links de gran interés.
La verdad es que ahora queda mucho más claro todo. Saludos |
roman: supongo que conoces la unidad ConvUtils.pas, donde se puede crear conversiones entre unidades de medida, pesos, etc. Pues juraría que he visto la misma filosofía con expresiones regulares en Delphi 6 hace un par de años, lo encontré de pasada y no entendí la filosofía de uso, así que lo descarté.
Usando el Grep Search de GExpert he obtenido algunas cosas: En BDS 2006 en la unidad Nsapi.pas, solo he podido encontrar esto:
En la unidad ToolsApi.pas he encontrado esto, aunque el prefijo "IOTA" me deja KO.
En dotNet\rtl\Borland.Vcl.Masks.pas tambien he encontrado cosas, pero en Delphi 6 no estará, que precisamente es donde recuerdo haberlo visto. ¿Podrías realizar algunas búsquedas en Delphi 6 para comprobar si existen lo que he encontrado? Gracias. Saludos |
Cita:
OTA => Open Tools API. Estas cosas son útiles cuando te pones a jugar con la parte trasera del IDE de delphi.. :D La interfaz en cuestión es la que usas cuando queres hacer una búsqueda, que por cierto, tiene una opción (limitada) para buscar usando expresiones regulares, lo que no quiere decir que podas usarlas desde el lenguaje... es decir, en tus propios programas. Como ya ha dicho roman, para esto hay componentes y bibliotecas de terceros. Hasta luego. ;) |
Menos mal, me parecía que Borland me insultaba IdiOTA :D ;)
|
Gracias a todos. Ya sepo varias cosas más.
|
Cita:
Saludos |
La franja horaria es GMT +2. Ahora son las 07:09:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi