8

コンマ区切りリストのN番目のエントリを見つけるために使用できる正規表現が必要です。

たとえば、このリストが次のようになっているとします。

abc,def,4322,mail@mailinator.com,3321,alpha-beta,43

...そして、7番目のエントリ ( )の値を見つけたかったのですalpha-beta

4

3 に答える 3

11

私の最初の考えは、正規表現を使用するのではなく、文字列をコンマの配列に分割するものを使用することですが、正規表現を要求したためです。

ほとんどの正規表現では、最小または最大の一致を指定できるため、おそらくこのようなものが機能します。

/(?:[^\,]*\,){6}([^,]*)/

これは、コンマではない任意の数の文字の後にコンマが正確に 6 回続くものと一致することを目的としています (つまり(?:[^,]*,){6}?:キャプチャしないということです)。次に、コンマではない任意の数の文字と一致してキャプチャします([^,]+)。最初のキャプチャ グループを使用します。

さらに情報が必要な場合はお知らせください。

編集:文字列の最初の部分をキャプチャしないように上記を編集しました。この正規表現は C# と Ruby で機能します。

于 2012-03-15T16:06:54.770 に答える
0

次のようなものを使用できます。

([^,]*,){$m}([^,]*),

出発点として。($ mを(n-1の値)に置き換えます。)コンテンツはキャプチャグループ2に含まれます。これはサイズnのリストなどを処理しませんが、状況に応じて適切な変更を加えるだけです。

于 2012-03-15T16:04:31.710 に答える
-2
@list = split /,/ => $string;
$it = $list[6];

あるいは単に

$it = (split /,/ => $string)[6];

{6}毎回a を含むパターンを書くのに勝ります。

于 2012-03-15T16:07:12.927 に答える