私はこの正規表現を使用しています:
((?:[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
次のように正規表現を簡単に簡単にできます。
(?:([a-z]{2,})_)?(\d+)_([a-z]{2,}\d+)_(\d+)$
最初のグループのない入力文字列にアンダースコアがあるかどうかはわかりませんが、文字列全体であれば上記の正規表現を使用できます。
ご覧のとおり、2番目の一致で一致したグループ1は空で、一致したグループ2から始まります。