sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #100494
Regular expression til ektraktion af "quoted strings"
Hej sslug'er
Jeg vil gerne kunne ekstrahere alle tekst-strenge fra nogle c-filer.
Da strengene kan indeholde escapede tegn, er det ikke bare at matche
enhver tekst der starter med " og slutter med "
Jeg vil således gerne matche tekster som fx:
1)
"test\"sss\"fgsfsdf\"\"gs"
og
2)
"test\"sss\\fgsfsdf\"\"gs"
Jeg har forsøgt at skrive et renerelt regulært udtryk som:
(Anvender GRegex fra glib der anvender PCRE - Perl Compatible Regular
Expressions)
"(?<string>\"[^\\\"]*(?:\\.[^\\\"]*)*\")"
Ved at køre udtrykket på strengene, fås match som:
1)
"test\"
"fgsfsdf\"
"gs"
men ikke hele strengen!
2)
"test\"
"\"
På en eller anden vis synes der at være .(dot), der ikke matcher som
forventet.
Jeg har også prøvet noget tilsvarende i Emacs og der lykkes det heller ikke.
Emacs variant: \(\"[^\\\"]*(\\.[^\\\"]*)*\"\)
(Matcher faktisk intet i de to viste strenge.)
Er der nogen der kan vise mig et regulært udtryk der gør det jeg ønsker?
(Og gerne evt. forklare hvorfor det udtryk jeg har skrevet ikke virker.)
Med venlig hilsen
Egon Andersen
Follow ups