[C#][Regex]Wszystkie wystąpienia pomiędzy znacznikami.

0
            Regex reg = new Regex("(START)(.*)(STOP)");
            string str = "xxxxSTARTaaaaaaSTOPbbbbbbbSTARTccccccccSTOPyyyyyy";
            Match output = reg.Match(str);

Chodzi o to aby znaleźć wszystkie wystąpienia między START i STOP.
W tym przypadku mają to być: STARTaaaaaaSTOP oraz STARTccccccccSTOP.

Niestety powyższe wyrażenie znajduje STARTaaaaaaSTOPbbbbbbbSTARTccccccccSTOP.
Czy ktoś wie jak je naprawić, tak żeby było dobrze ?

0

.* -> .*?
greedy vs. non-greedy

druga opcja, jesli faktycznie duze S jest odrozniajace delimiter:
.* -> [^S]*

edit: ewentualnie, negative lookahead. nie wiem czy bedzie szybsze od nongreedy, sprawdz sobie jesli to ważne
.* -> ((?!STOP).)*

0

super, dzięki.

0

Witam
Podłączę się pod posta
Potrzebuje odczytać coś takiego :

<dt>muzyka:</dt>			<dd>
		    									<a href="/person/Clint.Mansell" title="Clint Mansell - filmografia - Filmweb.pl">Clint Mansell</a>
				
				
								
				,												<a href="/person/Kronos+Quartet-11487" title="Kronos Quartet - filmografia - Filmweb.pl">Kronos Quartet</a>

				
				
								
							
		    
			</dd>

jak dam :
Regex reg = new Regex("<dt>muzyka:</dt>\\s*<dd>\\s*(.*?)</a>", RegexOptions.Multiline);
to działa i do pierwszego znacznika </a> mi zczytuje
ale jak dam Regex reg = new Regex("<dt>muzyka:</dt>\\s*<dd>\\s*(.*?)</dd>", RegexOptions.Multiline);
to nic nie dostaje.
Ma ktoś jakiś pomysł ??

EDIT:
poradziłem sobie zmieniajac RegexOptions.Multiline na RegexOptions.SingleLine

1 użytkowników online, w tym zalogowanych: 0, gości: 1