regularni izraz

Bosnjak Zoran ITWEP Bosnjak at iskratel.si
Mon Jul 5 15:46:52 CEST 2004


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...   ']

Pravilo za atom je nekako takole:
- vse kar je med parom narekovajev - "..."
ali
- skupina znakov (en ali več), ki ni:
  - dvojni narekovaj
  - vejica
  - je enako
  - white space 

Ustrezen regularni izraz pa: '"[^"]*"|[^",=\s]+'
Žal pa mi ta izraz pod atom šteje tudi narekovaje same, jaz bi želel samo vsebino med narekovaji.
Dobim torej: '"x=1 (string)"'
namesto: 'x=1 (string)'

Kako bi to lahko popravil (brez naknadne obdelave atomov)?

Celoten python program je to (sintaksa regularnih izradov naj bi bila enaka kot v perl-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)
------

lp,
Zoran Bošnjak




More information about the lugos-prog mailing list