Avatar billede mnv_dk Praktikant
03. marts 2009 - 14:13 Der er 3 kommentarer

Regex match

Jeg har en tekst hvor jeg ønsker at matche indeholdet mellem 2 [Message] felter.

Eksempel, mit fulde kontent er:

[Message]
Foo=Bar;
Bar=Baz;
[Message]
Baz=Foo;
Foo=Bar;


I ovenstående ønsker jeg at fange følgende 2:

"Foo=Bar;
Bar=Baz;"

og

"Baz=Foo;
Foo=Bar;"

Jeg har prøvet med følgende:

regex = Pattern.compile("\\[Message\\](\\s.*?)+",Pattern.MULTILINE);

Hvilket blot giver mig:

"[Message]
Foo=Bar;
Bar=Baz;
[Message]
Baz=Foo;
Foo=Bar;"

Dette giver jo for meget, prøver jeg derimod:
regex = Pattern.compile("\\[Message\\](\\s.*?)+\\[Message\\]",Pattern.MULTILINE);

Da jeg jo i virkeligheden vil have det mellem de 2 Message klamme bokse, får jeg ikke 2. del. med, heller ikke selv om denne måtte ende med [Message].

Hvordan går jeg dette ?
Avatar billede ksoren Nybegynder
03. marts 2009 - 14:36 #1
Prøv med denne

\\[Message\\](.*?)(?=\\[Message\\]|$)

og Pattern.DOTALL i stedet for MULTILINE
Avatar billede mnv_dk Praktikant
04. marts 2009 - 11:21 #2
Super det virkede
Avatar billede mnv_dk Praktikant
11. juni 2009 - 19:28 #3
ksoren2, lægger du et svar ?
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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