2016-04-06 4 views
-1

ich in C# bin, und lassen Sie uns sagen, ich habe diese Zeichenfolge:In C# Regex Spiele kehrt ganze Schwaden von Text

String input = "some text with <<test>> and <<test2>> thrown in for fun"; 

und ich habe diese Regex mit Schleife:

Regex literals = new Regex(@"\<<([^\>]+)\>>"); 

foreach(Match match in literals.Matches(input)) 
     { 
      Console.WriteLine("\"" + match.Value + "\""); 
     } 

I don ‚t erhalten

"<<test>>" 
"<<test2>>" 

sondern bekomme ich

"<<test>><<test2>>" 

Ich weiß gerade genug über reguläre Ausdrücke, um nützlich zu sein, wenn ich sie brauche, aber offen gesagt ist es meistens griechisch für mich. Ich Strings habe, dass

<<text>> 

Art von Format verwenden zu bezeichnen, wo Benutzereingaben gehen (es ist für einige alte, alte Software, ich weiß nicht bekommen, wie die Saiten speichern) in einigen benutzerdefinierten Befehlen und einig die Befehle können zehn dieser Felder enthalten, und meine Regex-Übereinstimmungsschleife gibt alles zwischen der ersten und der letzten Möhre zurück. Hier ist ein Beispiel aus der Praxis, die kurz genug ist, zu konsumieren:

<< Enter the reference number you would like to search for >><< Enter a 
specific date or leave blank to search the last 60 days. 
Example: xx/xx/xxxx >> 

sollte

<< Enter the reference number you would like to search for >> 
<< Enter a specific date or leave blank to search the last 60 days. 
Example: xx/xx/xxxx >> 

Antwort

0
Regex(@"\<<([^\}]+)\>>"); 

sein sollte

Regex(@"\<<([^\>]+)\>>"); 

aber ich vergessen, es zu ändern, wenn ich kopiert der Text von einer anderen Regex, die geschweifte Klammern verwendet.