CSVの2番目のデータ区切りのカンマまでマッチさせる。 文字データとしてのカンマは、考慮する。 CSVの形式は、以下の通りです。 文字列データの中に、 カンマも、文字としてのダブルコーテーションもない場合は、 文字列データがダブルコーテーションでくくってないこともある ダブルコーテーションでくくったデータの中での、 連続したダブルコーテーションは、文字としてのダブルコーテーションとします(VBのエスケープ方式) 不正なCSVの形式は考慮しない 検索前 検索後
111,"Oracle""SQL",1,a 222,"Ruby",2,b 333,Regex,3,c 444,"MySQL"""",""""",4,d 555,"Perl"","""",",5,e 666,,6,f 777777,Java,g,7 888,VB2005,h,8 XXX,111,"Oracle""SQL",1,a XXX,222,"Ruby",2,b XXX,333,Regex,3,c "Y",444,"MySQL"""",""""",4,d YYY,555,"Perl"","""",",5,e "X""Y",666,,6,f """Z""",777777,Java,g,7
^((((?!,(([^"]*"){2})*[^"]*$).)*),){2} 別解 ^(([^",]*|"((?!,(([^"]*"){2})*[^"]*$).)*),){2}
行末までにダブルコーテーションが偶数個なければ、文字列データのカンマ だと判断してます。 別解では、ダブルコートでくくられているかで場合分けしてます。 大量データの場合は、別解のほうがレスポンスがいいかもしれません。 2-35 次に文字列ABCがある、文字X以外を検索