Bir veya daha fazla kelimeyi içeren normal ifade


84

Tam sayı ve ardından "saniye" veya "" dakika "ile eşleşen bir ifade oluşturmam gerekiyor

Bu ifadeyi denedim: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)

Saniyeler için iyi çalışıyor, ancak dakikalar değil.

Örneğin, "5 saniye" 5; saniyeyi; "5 dakika" ise ;; dakika verir

Yanıtlar:


99

"VEYA" sembolü için fazladan bir çift parantez kaçırdınız. Aşağıdakiler hile yapmalı:

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

Bunlar olmadan ya bir sayıyla ve ardından saniyelerle eşleşiyordunuz VEYA sadece dakika kelimesini


17
ancak bu gerekli olmayan bir "ekstra eşleşme" dir. Ya kullanın ([0-9]+)\s+(?:(\bseconds\b)|(\bminutes\b))ya da([0-9]+)\s+(\bseconds\b|\bminutes\b)
dognose

3
Evet, bu doğru, \ bseconds \ b ve \ bminutes \ b etrafındaki parantezlere gerek yok!
micantox

34

Tek bir grubu saniyeler / dakikalar için kullanabilirsiniz. Aşağıdaki ifade ihtiyaçlarınıza uygun olabilir:

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

Çevrimiçi demo

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.