2010-11-23 18 views
1

Ich versuche, eine Regex mit dem richtigen Muster zu instanziieren, um nur den richtigen Wert einer Zeichenfolge zu erhalten. Meine Textdatei hat:Kleinstes Muster zum Extrahieren von Zeichenfolgenwerten mit RegEx

Comment ID : 1234.5 

, und ich möchte den richtigen Wert erhalten, wie folgt:

1234.5 

Was die richtige RegexMuster sein würde?

hier, was ich habe bisher

new Regex(@"^Comment ID\s*:\s*(?<comment_id>\w+)", RegexOptions.Multiline | RegexOptions.IgnoreCase); 

Aber das bringt auch den nicht benötigten String "Kommentar-ID"

Wäre möglich sein, nicht die Gruppe Marker verwenden <comment_id>?

Antwort

0

(< = Kommentar-ID : das \ s *) [^ \ s] +

+0

Siehe http://www.regular-expressions.info/lookaround.html – mbeckish

+0

Nizza! und das funktioniert auch: 'new Regex (@ "Kommentar \ sID \ s: \ s (? \ d +)", RegexOptions.IgnoreCase);' –

0

Wenn Sie sich nicht, was die : links können Sie nur verwenden:

"^.*:\s*(?<comment_id>\w+)" 

Sie werden nicht die RegexOptions für diese verwenden müssen, entweder, da es keine Strings ist, den Fall zu ignorieren

+0

Tatsächlich linken Teil ist immer fest (konstante Wörter) wie "Id Kommentar". Es ist wie ein Feldname. –

+0

Also '. *:' Wird alles bis einschließlich '' 'zusammenbringen und wird tun, was Sie brauchen. – thecoop

1

Sie müssen keine Gruppennamen verwenden - aber dann müssen Sie sie durch Indizes referenzieren. Wenn linken Teil-Strings können nicht enthalten ":":

^[^:]+:\s*(.*?)\s*$ 

Auch Sie intance String.Split verwenden können() -Methode: dann kann die Regex sein?

"abc : def".Split(new[] { ':' }, 2) 
+0

Wenn Sie ein' char' teilen, müssen Sie es nicht in ein Array einfügen. Split ist variabel für 'Char's. –

+0

Matt, nicht in der Überladung, wo Sie das Argument _count_ angeben können. –

+0

Ah, guter Punkt @Loki –

0

Regex Sie "^Comment ID\s*:\s*(?<comment_id>\w+)" zur Verfügung gestellt hat Zahlen nicht

Versuchen nach Punkt übereinstimmen zu verwenden: (?!^Comment ID\s*:\s*)(?<comment_id>\d+\.*\d*)

Sie können auch Comment-ID auf alle Wörter ändern oder \ w +

Verwandte Themen