Regex ile harf grupları bulmak için çalışıyor

2 Cevap php

Ben parantez içinde karakter 1 veya daha fazla tanımlanmış gruplar bulmak gerekir. Birden fazla grup varsa, bir tire işareti ile ayrılacaktır.

Örnek:

(us)
(jp)
(jp-us)
(jp-us-eu)

Ben dize yalnızca bir grup içeriyorsa grubunu bulmak için nasıl düşündüm:

/\(us\)|\(jp\)/

(us-jp) VEYA (jp-us): bu daha bir hypen ayrılmış tek ve belirli bir sırayla bulmaya gelince Ancak, ben şaşkın değilim

Herhangi bir yardım takdir edilmektedir.

Thanks, Simon

2 Cevap

\((\b(?:en|jp|us|eu)-?\b)+\)

Açıklama:

\(                     // opening paren
(                      // match group one
  \b                   // word boundary
  (?:en|jp|us|eu)      // your defined strings
  -?                   // a hyphen, optional
  \b                   // another word boundary
)+                     // repeat
\)                     // closing paren

eşleşir:

(us)
(jp) 
(jp-us)
(jp-us-eu)

eşleşmiyor:

(jp-us-eu-)
(-jp-us-eu)
(-jp-us-eu-)

Bu deneyin:

/\([a-z]{2}(?:-[a-z]{2})*\)/

Bu benim hypens tarafından separeted daha iki harf dizileri içeren parantez içinde herhangi iki harf dizisi maç olacak. Bu yüzden (ab), (ab-cd), (ab-cd-ef), (ab-cd-ef-gh) vb