[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