Inicio > Mis eListas > nave > Mensajes

 Índice de Mensajes 
 Mensajes 5181 al 5200 
AsuntoAutor
Re: problemas con Gabriel
Nueva versión de c Oscar Ma
Miembro nuevo oviangla
Re: Miembro nuevo Oscar Ma
Re: Estado de bugz knocte
Re: Estado de bugz Oscar Ma
Re: Estado de bugz knocte
Re: Estado de bugz Oscar Ma
Estado de las cosa Ricardo
Alternativa de her Oscar Ma
Re: Alternativa de Ricardo
Re: Estado de las Ricardo
Re: Estado de las =?ISO-88
Re: Estado de las =?ISO-88
Re: Estado de las Ricardo
Re: Estado de las Ricardo
Re: Estado de las =?ISO-88
Re: Estado de las Ricardo
Re: Estado de las =?ISO-88
Correciones del ca Oscar Ma
 << 20 ant. | 20 sig. >>
 
Proyecto NAVE
Página principal    Mensajes | Enviar Mensaje | Ficheros | Datos | Encuestas | Eventos | Mis Preferencias

Mostrando mensaje 5214     < Anterior | Siguiente >
Responder a este mensaje
Asunto:Re: [nave] Estado de las cosas
Fecha:Martes, 23 de Marzo, 2004  01:00:12 (+0100)
Autor:=?ISO-8859-15?Q?V=EDctor_Fern=E1ndez?= <anillodance @...........com>
En respuesta a:Mensaje 5212 (escrito por Ricardo Palomares Martinez)

Ricardo Palomares Martinez escribió:

>Víctor Fernández escribió:
>  
>
>>>Bien, parece que nadie sabe de Python, pero ¿sabe de expresiones
>>>regulares? Lo que hace falta es modificar el script lo justo para que
>>>en lugar de buscar esto (lo que busca el script en los archivos
>>>originales de la ayuda en inglés):
>>>
>>> <a name="texto_en_ingles">Texto en inglés</a>
>>>
>>>y devolver "texto_en_ingles" (que luego se trata sustituyendo los
>>>subrayados por espacios), busque esto:
>>>
>>> <h? id="texto_en_ingles">Texto en español</h?>
>>> 
>>>
>>>      
>>>
>>En Perl y PHP sería algo como:
>>
>>/\<h. id=\"([a-zA-Z_]*)\"\>([^<]*)\<\/h.\>/
>>
>>Por ejemplo, en PHP si no recuerdo mal era:
>>
>>preg_match ('/\<h. id=\"([a-zA-Z_]*)\"\>([^<]*)\<\/h.\>/i', $variable)
>>
>>Y con eso, $1 tendría lo de "texto_en_ingles" y $2 tendría lo de "Texto
>>en español". Por $1 y $2 habría que entender la variable que sea
>>dependiendo del lenguaje, pero me refiero al primer trozo capturado y el
>>segundo, que son siempre lo que va entre paréntesis, y el $0 captura
>>toda la expresión entera.
>>    
>>
>
>
>Gracias, probaré a ver qué sale, aunque confieso que no entiendo lo
>que quieres decir con $1, $2 y lo de los paréntesis... :-)
>  
>

Bueno, como llevo ya dos años aguantando la asignatura TAL (Teoría de 
Autómatas y Lenguajes Formales) y estoy hasta las narices de ella, 
aprovecho para comentar el tema. ;)

Una expresión regular sirve para encontrar algo que tenga un cierto 
patrón, como sabes. A eso de encontrar algo que tenga ese patrón me 
refiero con lo de "capturar". Pues bien, dentro de una expresión regular 
se pueden capturar subpatrones. Por ejemplo, imagina una expresión 
regular que sirva para encontrar el número de versión de un programa. 
Tenemos la cadena:

"Mozilla 1.6"

Y la expresión regular para encontrar la versión es:

[0-9]+\.[0-9]+

Que significa:

[0-9]+ ---> secuencia de longitud >= 1 de cualquier combinación de 
caracteres entre 0 y 9
\. ---> seguida por un punto (la \ actúa de carácter de escape porque el 
punto tiene un significado especial)
[0-9]+ ---> seguida de otra secuencia de longitud >= 1 de cualquier 
combinación de caracteres entre 0 y 9

Supongamos que quieres saber cuál es el número de versión mayor y el 
número de revisión (1 y 6 respectivamente). Para ello puedes usar los 
subpatrones. Para indicar cuándo empieza y termina un subpatrón (o como 
se llame), se encierra entre paréntesis. Así, la expresión quedaría:

([0-9]+)\.([0-9]+)

De esa forma, el programa capturaría la expresión normal, y además el 
trozo que coincida con el primer paréntesis y también el segundo, que 
serían el primer y segundo subpatrón respectivamente. Dependiendo del 
lenguaje, la función para encontrar expresiones regulares colocará los 
resultados en un array o en variables. Por ejemplo, en PHP lo coloca en 
un array. Pues bien, el índice 0 del array contiene la cadena entera que 
cumple la expresión regular. El índice 1 contiene la cadena que cumple 
el primer subpatrón, el 2 la del segundo y así sucesivamente.

Por tanto, usando esa expresión regular, podrías decirle que meta los 
valores en el array $version y tendrías que:

$version[0] = "1.6"
$version[1] = "1"
$version[2] = "6"


En otros lenguajes, como creo que es el caso de Perl y AWK, se utiliza 
$0, $1, $2,... en lugar de un array.

Así, usando la expresión que te he dado al principio con la cadena:

<h2 id="title">Título</h2>

Tendrías:

$variable[0] = "<h2 id="title">Titulo</h2>"
$variable[1] = "title"
$variable[2] = "Título"

Con lo cual, coger lo que hay dentro del id y lo que hay entre la 
etiqueta <h2> y </h2> resultaría trivial porque estaría ya almacenado en 
los índices 1 y 2 respectivamente.




-- 
Víctor Fernández Martínez
Gabinete de prensa de PoLinux [www.polinux.upv.es]. Usuario de Linux registrado
#312284 en http://counter.li.org.




_______________________________________________________________________
Visita nuestro patrocinador:
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~

                         inkClub

            ¡¡¡ TINTA GRATIS PARA TU IMPRESORA !!!

 ¡Consigue ya mismo tu cartucho de tinta gratuito para tu impresora!


 Haz clic aqui -> http://elistas.net/ml/135/
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~