Wyrażenie regularne zawierające jedno lub drugie słowo


84

Muszę utworzyć wyrażenie pasujące do liczby całkowitej, po której następuje „sekundy” lub „minuty”

Spróbowałem tego wyrażenia: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)

Działa dobrze przez kilka sekund, ale nie minut.

Np. „5 sekund” daje 5 sekund; podczas gdy „5 minut” daje ;; minuty

Odpowiedzi:


99

Właśnie przegapiłeś dodatkową parę nawiasów dla symbolu „LUB”. Poniższe powinny załatwić sprawę:

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

Bez nich dopasowałbyś liczbę, po której następowałyby sekundy LUB tylko słowo minuty


17
ale to „dodatkowe dopasowanie”, które nie jest wymagane. Albo użyj ([0-9]+)\s+(?:(\bseconds\b)|(\bminutes\b))albo([0-9]+)\s+(\bseconds\b|\bminutes\b)
dognose

3
Tak, to prawda, nie ma potrzeby stosowania nawiasów wokół \ bsekund \ b i \ bminut \ b!
micantox

34

Możesz użyć pojedynczej grupy przez sekundy / minuty. Poniższe wyrażenie może odpowiadać Twoim potrzebom:

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

Demo online

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.