[解決済み】Regexのオプショングループ
2022-01-28 20:05:37
質問
私はこの正規表現を使用しています。
((?:[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+)$
^ ^^
|--------------||
| first group ||- quantifier for 0 or 1 time (essentially making it optional)
最初のグループを除いた入力文字列にアンダースコアがつくかどうかはわかりませんが、文字列全体であれば上記の正規表現でOKです。
ご覧のように、2番目のマッチのマッチドグループ1は空で、マッチドグループ2から始まっています。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン