[LUGOS-PROG] regularni izraz
Petar Hitij
hipe at sdf-eu.org
Mon Jul 5 18:46:23 CEST 2004
On Mon, Jul 05, 2004 at 03:46:52PM +0200, Bosnjak Zoran ITWEP wrote:
> Zdravo,
> rad bi razbil znakovni niz na 'atome', kot je razvidno iz spodnjega primera
>
> vhod: 'par1=1, par2 2 par3 "x=1 (string)" par4 = " tudi to je string... "'
> izhod: ['par1', '1', 'par2', '2', 'par3', 'x=1 (string)', 'par4', ' tudi to je string... ']
--8<--
V Perl-u bi naredil nekaj takega:
#!/usr/bin/perl -w
$_='par1=1, par2 2 par3 "x=1 (string)" par4 = " tudi to je string... "';
print $_, "\n";
while ( s/"([^"]*)"// || s/([^",=\s]+)// ) {
print $1, "\n";
}
Vsak korak zanke izreze en atom iz stringa.
Po analogiji (od dalec) v Python-u:
#!/usr/bin/env python
import re
str = 'par1=1, par2 2 par3 "x=1 (string)" par4 = " tudi to je string... "'
pat = '"([^"]*)"|([^",=\\s]+)'
print re.findall(pat, str)
Lista parov (tuples?) se zgenerira v enem koraku, lustno.
Output ni popolnoma enak kot je zazeljeno. Izhodno listo je treba malce transformirati,
pa to raje prepustim komu, ki obvlada Python.
More information about the lugos-prog
mailing list