2013-09-05 18 views
11

bu regex kullanıyorum:Regex opsiyonel grup

SH 
6208069141055 
BC000388 
20110412101855 

Soru: nasıl 4 gruba ayrılarak

SH_6208069141055_BC000388_20110412101855 

:

((?:[a-z][a-z]+))_(\d+)_((?:[a-z][a-z]+)\d+)_(\d{13}) 

böyle dizeleri maç için İlk grubu isteğe bağlı olarak yapıyorum, sonuçta ortaya çıkan grup boş bir dize mi?
Mümkün olduğunda her durumda 4 grup almak istiyorum. Bu durum için

Giriş dizesi:

(?:([a-z]{2,})_)?(\d+)_([a-z]{2,}\d+)_(\d+)$ 

Ben girdi emin değilim: (ilk grup sonra hiçbir alt çizgi) kolayca regex kolaylaştırabilirsiniz

6208069141055_BC000388_20110412101855 

cevap

10

bu olmak ilk grup olmayan dize alt çizgiye sahip olsun veya olmasın, ancak tüm dize ise yukarıdaki regex'i kullanabilirsiniz.

regex101 demo

Gördüğünüz gibi, ikinci maçında eşleşti grup 1 boştur ve eşleşen gruba 2.

başlar