Avatar billede nubi19 Nybegynder
17. januar 2009 - 23:24 Der er 4 kommentarer og
2 løsninger

Regex til multiline matches

Jeg skal have lavet et "simpelt" regex til at matche alt mellem [foo] og [/foo]
inkl. de to "tags".

Min tanke var \[foo\].+\[/foo\], hvilket ikke fungerer :-(

Det er i C#.Net det skal anvendes, og jeg har slået Multiline til.

Nogen bud på hvorfor det ikke duer ?
Avatar billede locke Nybegynder
17. januar 2009 - 23:32 #1
Hvis punktum skal fange linjeskift er det Singleline du skal have fat i

http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx
Avatar billede nubi19 Nybegynder
17. januar 2009 - 23:57 #2
Ah doh, jeg skulle nok lige have læst enum beskrivelserne igennem inden jeg spurgte.

Tak for det tjeppe svar, smid et svar så er der point :-)
Avatar billede websmith Nybegynder
18. januar 2009 - 11:17 #3
Alternativt kan du bruge:

\[(?<name>[^\]/]*?)](?<content>[^\[]*)

Med multiline slået til.

Det vil fx på følgende teksts:


[foo]

Jeg gik mig over sø og land



[/foo]

[test]

Indholdet
af
test

[/test]

Give dig to Matches, med named capture groups, så du kan bruge

foreach(Match m in matches)
{
  string tagName = m.Groups["name"].Value;
  string tagContents = m.Groups["content"].Value;

}

Så vidt jeg husker. Jeg kan ikke lige huske syntax for Groups, men det er noget i den stil :)

Mvh
Avatar billede nubi19 Nybegynder
19. januar 2009 - 21:25 #4
Tjah det kunne jeg nok også, når locke lige svarer kan i få 100 point hver :-)
Avatar billede tmi Nybegynder
24. januar 2009 - 21:20 #5
#\[([a-z]+)([^[\]]*)]((?:(?R)|(?:.))*)\[/\\1]#Us

Us betyder at Ungreedy og Dotall (Singleline?) er slået til. Denne kan matche nestede tags, forstil dig fx:

abc:
[indent]
mappe
[indent]
file1
[bold color='red']file2[/bold]
file3
[italic]file4[/italic]
file2
[/indent]
[/indent]

Hvis Ungreedy ikke findes i dit miljø skal du blot sætte ? efter alle * og +
Avatar billede nubi19 Nybegynder
01. februar 2009 - 21:33 #6
Nå det ser ikke ud til locke svarer, så du får 100 point for dit :)
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
Kurser inden for grundlæggende programmering

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