Edorph Skrevet 27. juni 2005 Del Skrevet 27. juni 2005 Hei, Forsøker å lære meg dette i forbindelse med en jobb. Sitter nå med teksten (.....masse tekst....) start_art-relaterte_ STRENG1 end_art-relaterte_ (30.05.05) start_art-relaterte_ STRENG2 end_art-relaterte_ (31.05.05) start_art-relaterte_ STRENG3 end_art-relaterte_ (01.06.05) (.....masse tekst.....) hvor STRENG1, 2, 3 osv er variable (både i lengde og innhold) tekststrenger. Det er et ukjent antall slike linjer, så planen er å finne en og en. Mitt foreløpige forsøk er slik start_art-relaterte_\W+[A-Z0-9\W\s]+\W+end_art-relaterte_\W+(\W+\d+)+ men det funker altså ikke. Det er så vidt jeg vet snakk om en variant av Pythons regulære uttrykk. Noen som har et tips eller to? Er helt fersk i dette. Lenke til kommentar
Vice Skrevet 27. juni 2005 Del Skrevet 27. juni 2005 (endret) En ganske rett fram og grei metode vil vel være noe slikt: ^start_art-relaterte_\s\w+\send_art-relaterte_ \(\d+.\d+.\d+\)$ Dersom du er avhengig av mer robust matching må det nok gjøres litt endringer, men det bør fungere dersom linjene alltid er på den formen du har gitt. (Denne er basert på perl reg exp. Vet ikke om det er noen forskjell i Python) Endret 27. juni 2005 av Vice Lenke til kommentar
birds Skrevet 27. juni 2005 Del Skrevet 27. juni 2005 start_art-relaterte_\W+[A-Z0-9\W\s]+\W+end_art-relaterte_\W+(\W+\d+)+ Jeg tror du gjør det litt vanskelig. Ser ikke helt hva du trenger \W og den klammeparantesen til. ^start_art-relaterte_ (.+) end_art-relaterte_ \(\d\d\.\d\d\.\d\d\)$ Dette burde vel gjøre nytten, sett at du skal hente ut STRENG og datoen. Vet ikke helt om det passer helt til pythons regex, men du forstår vel kanskje meningen og finner ut av det med pythons dokumentasjon. Parantesene er for å kunne referere til disse områdene etterpå. Jeg tror at paranteser pleier å måtte escapes (skrives med backslash foran) for å matche i teksten. Denne koden baserer seg på at regexen kjører hver linje for seg, eller at punktum (matcher alt) ikke matcher linjeskift, noe jeg tror er standard de fleste steder. Dersom STRENG skal inneholde linjeskift blir det hele litt vanskeligere, men å kjøre den første parantesen som non-greedy, altså (.*?), fikser det. Dersom innholdet i STRENG kan matche "end_art-relaterte_ \(\d\d\.\d\d\.\d\d\)$", må du finne på noe med escaping. Lenke til kommentar
Edorph Skrevet 27. juni 2005 Forfatter Del Skrevet 27. juni 2005 (endret) Hei, takk for svar. Jeg endte opp med denne start_art-relaterte_[A-Z0-9\w\W\s]+end_art-relaterte_\W+(\W+\d+)+ Men nå som jeg ser forslagene deres, innser jeg at jeg kanskje hadde litt smør på flesket der, ja Takk igjen. Endret 27. juni 2005 av Edorph Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå