Otra de expresiones regulares en archivo

Hernán Martínez Foffani hernan en orgmf.com.ar
Mar Ene 25 16:07:52 CET 2005


> Tengo una nueva duda con las expresiones regulares en
> mi programita para modificar el archivo
> /etc/dhcpd.conf
>
> Usando substrings puedo elegir desde qué caracter de
> una línea quiero obtener el contenido (algo así como a
> = linea[10:20]). Pero, ¿cómo puedo obtener el
> contenido de una línea hasta encontrar un caracter
> específico?
>
> Por ejemplo: supongamos que tengo la siguiente línea:
>
>           fixed-address       192.168.15.5;
>
> Necesito obtener sólo los caracteres desde la posición
> 31 hasta el caracter punto y coma. ¿Puedo hacer esto
> con substrings? ¿O tengo que usar expresiones
> regulares?

¿Estás seguro que ese archivo lo podés procesar por
posicionamiento absoluto?  No conozco el formato del
archivo dhcpd.conf pero por el ejemplo sospecho que le
da igual la cantidad de blancos que luego (y antes)
de "fixed-address". ¿O me equivoco?

Como norma general se usa "troceado" posicional para
archivos cuyos registros tienen longitud fija y para los
casos de longitud variable es normal que tengas que
trocearlo por separadores.

Quizás podrías usar el método split del modulo re
que es mas sencillo que usar expresiones regulares puras
y duras.

>>> import re
>>> re.split("[ ;]", "     fixed-address    192.168.15.5;")
['', '', '', '', '', 'fixed-address', '', '', '',
'192.168.15.5', '']
>>>

(Quitar los '' lo dejamos para otro hilo de
conversación. ;-)

> Me ha costado bastante digerir esto de las expresiones
> regulares, pero de a poco voy entendiendo.

Y... Suelen necesitar un cambio de chip.

-H.




Más información sobre la lista de distribución Python-es