Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

【Perl】splitの際にエスケープされているものを含めないようにする

タイトルの通り。

例えば「,(カンマ)」の場合。

CSVファイルの1行なんかを簡易的に「,(カンマ)」でsplitしたい場合、バックスラッシュなどでエスケープされている物はsplitの対象としたくなかったりする。

その場合はsplitで正規表現を用いて、以下のようにすれば良い。

例: sample.pl

#!/bin/perl
my $str = "hoge\\,fuga,piyo";
my @array = split(/(?<!\\),/, $str);
foreach (@array) {
  print $_."\n";
}
exit;

 

出力結果: sample.pl

hoge\,fuga
piyo

実際に使う場合は考慮しなければならないことも多そうだが、割と応用は効く。

 

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)