コンマ区切りリストのN番目のエントリを見つけるために使用できる正規表現が必要です。
たとえば、このリストが次のようになっているとします。
abc,def,4322,mail@mailinator.com,3321,alpha-beta,43
...そして、7番目のエントリ ( )の値を見つけたかったのですalpha-beta
。
私の最初の考えは、正規表現を使用するのではなく、文字列をコンマの配列に分割するものを使用することですが、正規表現を要求したためです。
ほとんどの正規表現では、最小または最大の一致を指定できるため、おそらくこのようなものが機能します。
/(?:[^\,]*\,){6}([^,]*)/
これは、コンマではない任意の数の文字の後にコンマが正確に 6 回続くものと一致することを目的としています (つまり(?:[^,]*,){6}
、?:
キャプチャしないということです)。次に、コンマではない任意の数の文字と一致してキャプチャします([^,]+)
。最初のキャプチャ グループを使用します。
さらに情報が必要な場合はお知らせください。
編集:文字列の最初の部分をキャプチャしないように上記を編集しました。この正規表現は C# と Ruby で機能します。
次のようなものを使用できます。
([^,]*,){$m}([^,]*),
出発点として。($ mを(n-1の値)に置き換えます。)コンテンツはキャプチャグループ2に含まれます。これはサイズnのリストなどを処理しませんが、状況に応じて適切な変更を加えるだけです。
@list = split /,/ => $string;
$it = $list[6];
あるいは単に
$it = (split /,/ => $string)[6];
{6}
毎回a を含むパターンを書くのに勝ります。