Avatar billede hkb-x Nybegynder
23. februar 2010 - 11:31 Der er 2 kommentarer

Tjek om hele strengen passer på et regulært udtryk

Jeg sider og leger lidt med nogle lidt avancerede regulære udtryk i python.

Jeg har følgende udtryk: re.compile('^$|(?:([\w_]+)(<|>|=)([\w\d]+),*)', re.UNICODE)

Det skal bruges til at overføre en streng af sekvensen: "arg1=val1,arg2<val2" til datatypen: [('arg1','=','val1'), ('arg2','<','val2')]. Dette gøres nemt ved at benytte metoden findall i regexp modulet.

Mit problem er nu at jeg vil teste om hele den tekststreng jeg modtager passer på udtrykket. Med simplere udtryk kan man undersøge om re.match(reqexp, string).end() == len(string) men grundet "?:" stopper match ved først fundne gruppe.

Er der en simpel måde i python hvor man kan unddersøge om en streng ikke macher på et udtryk?
Avatar billede tjp Mester
23. februar 2010 - 14:10 #1
Hvis hele streng skal matche udtryk så start udtryk med '^' og slut med '$' og undlad multiline.
Undre mig lidt over '^$|' i starten og ',*' i slutningen af dit udtryk?
Avatar billede tjp Mester
23. februar 2010 - 14:16 #2
Desuden svarer '\w' til [A-Za-z0-9_], så [\w\d] og [\w_] er vist ikke helt det du mener?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester