2012-03-15 6 views
6

Nthのエントリをカンマ区切りのリストで検索するために使用できる正規表現が必要です。例えばコンマで区切られたリストでNᵗbeanのエントリを見つけるのにどのような正規表現を使用できますか?

、このリストは次のようになります言う:

abc,def,4322,[email protected],3321,alpha-beta,43 

...と私は7 番目のエントリ(alpha-beta)の値を探していました。出発点として

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

+4

正規表現を使用する必要がありますか? 'str.split("、 ")[N - 1]' – Amarghosh

+2

@Amarghoshについて彼はPythonを使用していないかもしれません – CoffeeRain

+0

あなたはまっすぐな正規表現ではしたくありません。分割したい、またはCSV解析モジュールを使用して、結果のリストから必要な要素を取り出したいとします。 – tchrist

答えて

7

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

ほとんどの正規表現では、最小一致または最大一致を指定できるため、このようなものが動作する可能性があります。その後、その任意の数の文字と一致してキャプチャする - ?:をキャプチャしないように言って - これは、カンマで6回正確に(?:[^,]*,){6}を踏襲し、カンマではない文字の任意の数と一致することを意図している

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

コンマではありません([^,]+)最初のキャプチャグループを使用します。

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

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

+0

これはJavaでも動作しますが、グループプロパティを使用する必要があるかもしれませんが、グループ配列の2番目の要素になります。 – gymbrall

0

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

+0

私はこれがうまく動作するとは思わない。 –

-2
@list = split /,/ => $string; 
$it = $list[6]; 

またはそれで{6}毎回のパターンを書くだけで

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

ビート。

関連する問題