Wenn Sie eigenständigen 4-stellige Zeichenfolge übereinstimmen sollen, können Sie einen regulären Ausdruck mit Wortgrenzen beachten:
!('It is 2016 now.' =~ /\b\d{4}\b/).nil? # => true
oder - eine reale Welt Probe Nutzung:
if string =~ /\b\d{4}\b/
Die \b\d{4}\b
paßt zu jedem 4 Ziffern, denen keine Wortzeichen (Ziffern, Buchstaben oder Unterstriche) vorangestellt oder gefolgt werden, so dass es in 02312345
keine Übereinstimmung gibt.
Wenn Sie das aktuelle Jahrhundert oder das 20. Jahrhundert präzisieren möchten, können Sie auch /\b(?:19|20)\d{2}\b/
Regex verwenden.
Um die Ziffern zu extrahieren, verwenden Sie s[/\b\d{4}\b/]
.
'It was in 2015/16.'[/\b\d{4}\b/] # => 2015
Siehe Ruby demo
Was für Jahr? Oder irgendwelche 4 nachfolgenden Ziffern? –
Bitte geben Sie einige Beispiele für die zu analysierenden Daten an. Ohne Kontext in den Daten ist es unmöglich, eine Lösung bereitzustellen. Wenn Sie das oben genannte für den folgenden Fall verwenden, würde dies zu falsch positiven Ergebnissen führen: "Der Code für den Safe lautet 0034". oder 'wir sollten treffen sind 0800 für Kaffee' – ABrowne
Vielen Dank für die schnelle Antwort! In meinem Fall sind falsche Positive kein so großes Problem, da ich erwarte, dass sie aufgrund der Art der Daten nicht auftreten. Ich habe meinen Code aktualisiert, um ein Beispiel für die Daten zu geben, die ich analysiere – AaronDT