CSV の二重引用符で囲まれた要素内のコンマをプレースホルダー テキストに置き換えようとしています。
たとえば、CSV に次の行があるとします。
1,2,"three,four,five",6,7,8,"nine,ten",11,12
この正規表現を使用する (Java 用にエスケープされた引用符):
(?<=\")([^"]+?),([^"]+?)(?=\")
最初の一致を次のように置き換えます。
$1<COMMA>$2
これにより、次の結果文字列が得られます。
1,2,"three<COMMA> four, five",6,7,8,"nine,ten",11,12
一致するものがなくなるまで、resultString に対してこれらの手順を繰り返します。プログレッシブ結果文字列は次のとおりです。
1,2,"three<COMMA> four, five",6,7,8,"nine,ten",11,12
1,2,"three<COMMA> four<COMMA> five",6,7,8,"nine,ten",11,12
1,2,"three<COMMA> four<COMMA> five",6<COMMA>7,8,"nine,ten",11,12
1,2,"three<COMMA> four<COMMA> five",6<COMMA>7<COMMA>8,"nine,ten",11,12
1,2,"three<COMMA> four<COMMA> five",6<COMMA>7<COMMA>8,"nine<COMMA>ten",11,12
1,2,"three<COMMA> four<COMMA> five",6<COMMA>7<COMMA>8,"nine<COMMA>ten",11,12
正規表現を微調整して、リスト項目内の「、」のみを置き換え、区切り文字自体を置き換えるにはどうすればよいですか? 3 回目の反復では、",6,7,8," で一致しています。
後読みを 1 つの dbl 引用符のみに一致させ、その周りに dble 引用符がないか、または 3 つの dbl 引用符のグループにすることでこれを防ごうとしましたが、「後読みグループには明らかな最大長がありません」というエラーが発生しました。