• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlで検索 カンマ n番目)

Perlでカンマ区切りのデータから指定されたワードを抽出する方法

このQ&Aのポイント
  • Perlのプログラムで、カンマ区切りのデータから指定されたワードを抽出する方法を教えてください。
  • 特定のワードを含む行のみを抽出したい場合、`grep`関数を使用することができます。
  • 抽出した行から特定のワードのみを取り出す場合、正規表現を使用して抽出することができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

push @Search, [$field[2], $line] if $field[2] =~ /s/; とすると、配列 @Search は配列の配列になります。 [[2 番目のフィールド, 行全体], [2 番目のフィールド, 行全体], ...]

Cells231
質問者

お礼

ありがとうございました! 実行でき解決できました!

その他の回答 (2)

回答No.2

正規表現も良いですが、2番目のフィールドとわかっているのなら、 コンマで分割してからマッチすれば良いような。 foreach my $line (@DATA) { my @field = split /\s*,\s*/, $line; push @Search, $field[2] if $field[2] =~ /s/; }

Cells231
質問者

お礼

説明不足で申し訳ないです;;

Cells231
質問者

補足

説明不足でした。すみません・・・ ご掲示くださったソースで、しっかり「sを含む文字列」を探しだすことに成功しました。 ただ、フィールドの[0][1][3]もほしいのです・・;; ご掲示くださったソース での実行結果 1,a,w,e,r 2,a,w,e,r 2,e,asa,v,ssss 3,s,ssss,a,a ↓ asa ssss 結果的には 1,a,w,e,r 2,a,w,e,r 2,e,asa,v,ssss 3,s,ssss,a,a ↓ 2,e,asa,v,ssss 3,s,ssss,a,a (@Search)

回答No.1

/\A(?:[^,]+,){2}$Search/ はどうでしょうか。

Cells231
質問者

お礼

ありがとうございます。 最後に、もう1つご教示お願いいたします

Cells231
質問者

補足

ご回答ありがとうございます。 やりたいことはこれです! しかし、1文字目の文字だけでなく 文字列の中に含む場合、どうするのでしょうか・・・? 例) 検索ワード 「s」 ヒットワード 「moshi」