Regulärer Ausdruck, der das eine oder andere Wort enthält


84

Ich muss einen Ausdruck erstellen, der einer ganzen Zahl entspricht, gefolgt von "Sekunden" oder "Minuten".

Ich habe diesen Ausdruck ausprobiert: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)

Es funktioniert gut für Sekunden, aber nicht für Minuten.

ZB "5 Sekunden" ergibt 5; Sekunden; während "5 Minuten" gibt ;; Minuten

Antworten:


99

Sie haben gerade ein zusätzliches Paar Klammern für das "ODER" -Symbol verpasst. Folgendes sollte den Trick tun:

([0-9]+)\s+((\bseconds\b)|(\bminutes\b))

Ohne diese haben Sie entweder eine Zahl gefolgt von Sekunden oder nur das Wort Minuten gefunden


17
Aber das ist eine "zusätzliche Übereinstimmung", die nicht erforderlich ist. Entweder verwenden ([0-9]+)\s+(?:(\bseconds\b)|(\bminutes\b))oder([0-9]+)\s+(\bseconds\b|\bminutes\b)
dognose

3
Ja, das stimmt, die Klammern um \ bseconds \ b und \ bminutes \ b sind nicht erforderlich!
Micantox

33

Sie können eine einzelne Gruppe für Sekunden / Minuten verwenden. Der folgende Ausdruck kann Ihren Anforderungen entsprechen:

([0-9]+)\s*(seconds|minutes)

Online-Demo

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.