Bender86
Lieutenant
- Registriert
- Jan. 2007
- Beiträge
- 718
Moin moin,
ich habe mir einen Regulären Ausdruck für Versionsnummern gebastelt, mit dem ich einen Text nach Versionen durchsuchen will. Dabei soll er alles matchen was mit "Zahl Punkt Zahl" anfängt und dahinter beliebige Zeichen bis zu einem Leerzeichen oder Ende des Textes hat. Also zum Beispiel:
"1.8 hier kommt irgend 1.1.2a ein Text 2.0ubuntu4"
Hier sollte "1.8 ", " 1.1.2a ", "2.0ubuntu4" gematcht werden.
Mein Regexp sieht so aus: (\s+|\A)\d[.]\d\S*(\s+|\z)
Nun zum Problem, wenn ich diesen Ausdruck bei www.rubular.com auf den Beispieltext anwende, werden die richtigen Stellen markiert.
Wenn ich jedoch im IRB arbeite sieht es dann so aus:
Ich habe neben scan schon match und split probiert, die liefern aber auch nicht das gewünschte Ergebnis (ein Array mit allen Treffern).
Ist scan hierfür die falsche Methode? Laut Doku und Tests mit anderen Ausdrücken sollte es eigentlich funktionieren. Kann mir jemand erklären warum das Ergebnis - Array mit leeren Strings / mit Leerzeichen - so seltsam ist?
Viele Grüße,
Bender
ich habe mir einen Regulären Ausdruck für Versionsnummern gebastelt, mit dem ich einen Text nach Versionen durchsuchen will. Dabei soll er alles matchen was mit "Zahl Punkt Zahl" anfängt und dahinter beliebige Zeichen bis zu einem Leerzeichen oder Ende des Textes hat. Also zum Beispiel:
"1.8 hier kommt irgend 1.1.2a ein Text 2.0ubuntu4"
Hier sollte "1.8 ", " 1.1.2a ", "2.0ubuntu4" gematcht werden.
Mein Regexp sieht so aus: (\s+|\A)\d[.]\d\S*(\s+|\z)
Nun zum Problem, wenn ich diesen Ausdruck bei www.rubular.com auf den Beispieltext anwende, werden die richtigen Stellen markiert.
Wenn ich jedoch im IRB arbeite sieht es dann so aus:
Code:
ruby-1.9.2-p0 > VERSION_REGEXP = /(\s+|\A)\d[.]\d\S*(\s+|\z)/
=> /(\s+|\A)\d[.]\d\S*(\s+|\z)/
ruby-1.9.2-p0 > text = "1.8 hier kommt irgend 1.1.2a ein Text 2.0ubuntu4"
=> "1.8 hier kommt irgend 1.1.2a ein Text 2.0ubuntu4"
ruby-1.9.2-p0 > text.scan(VERSION_REGEXP)
=> [["", " "], [" ", " "], [" ", ""]]
Ich habe neben scan schon match und split probiert, die liefern aber auch nicht das gewünschte Ergebnis (ein Array mit allen Treffern).
Ist scan hierfür die falsche Methode? Laut Doku und Tests mit anderen Ausdrücken sollte es eigentlich funktionieren. Kann mir jemand erklären warum das Ergebnis - Array mit leeren Strings / mit Leerzeichen - so seltsam ist?
Viele Grüße,
Bender