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

user965748
quelle

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

Micantox
quelle
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

Mistalis
quelle