2013-09-05 14 views
11

私は、この正規表現を使用しています:正規表現のオプションのグループ

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

をこのような文字列と一致する:

SH 
6208069141055 
BC000388 
20110412101855 

質問:はどのように4つのグループに分離

SH_6208069141055_BC000388_20110412101855 

を最初のグループをオプションにして、結果のグループが空の文字列になるようにしますか?
可能であれば、すべてのケースで4つのグループを取得したいと考えています。

この場合の入力文字列:(最初のグループの後には下線)あなたが簡単にあなたの正規表現は、このように簡素化することができ

6208069141055_BC000388_20110412101855 

答えて

10

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

私は入力するかどうかわからないんだけど最初のグループのない文字列はアンダースコアを持つかどうかを確認しますが、文字列全体の場合は上記の正規表現を使用することができます。

regex101 demo

あなたが見ることができるように、第二試合でマッチしたグループ1は空で、マッチしたグループ2

から始まる
関連する問題