文字列からデータを抽出する正規表現を作成しようとしています。私のサンプルストリング:dn1:pts-sc1.1
。私が期待しているデータのフォーマット:['pts', 'sc', '1.1']
したがって、基本的にすべての文字は:
の後に続き、最後から数えます。JS Regex複数のキャプチャグループがすべての一致を返します
/^[^:]+:(?:([a-z]+)-?)+([\d\.]+)$/g
残念ながら、それは手紙の最後のセットを返します。私have right nowは何
。 ['sc', '1.1']
Iはまた、最初のキャプチャグループに+
を追加しようとした:
/^[^:]+:(?:([a-z]+)+-?)+([\d\.]+)$/g
同じで結果。その正規表現の違いだけが私にこのコメントを与えます:
繰り返しキャプチャグループは、最後の反復だけをキャプチャします。
:あなたは、データ入力文字列の
--edit
例では興味がない代わりに、場合すべての反復を捕獲または非キャプチャグループを使用することを繰り返し、グループの周りのキャプチャグループを置きます
dn2.33:sc-pts-tt-as3.43
dn2.33:sc3.43
dn2.33:sc-tt-as3.43
基本的に私は文字グループの数を知らない。
グループの任意の数を取得できない場合があります。その数はパターン内のキャプチャグループの数で指定します。 ['/^[^:]+:([az]+)-([az]+)([\d.]+)$/'](https://regex101.com/r/xhUe8z)/1)? –
@WiktorStribiżew私は編集にいくつかの追加情報を追加しました。 – Quba