読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

"\"に続かない","で文字列を分割したい

","で文字列を分割する。
ただし、"\"に続く","はエスケープされていると見なして分割しない。

といったときには、「ゼロ幅の否定的後読み」というのを使えばOKです。

// 分割する文字列
String str  = "\\,a\\,a,bb\\,,cc\\,,\\,\\,,";

// 「\に続かない,」で分割
String[] strs = str.split( "(?<!\\\\)," );
for ( String s : strs) {
    System.out.println( s );
}

実行結果です。

\,a\,a
bb\,
cc\,
\,\,


「ゼロ幅の否定的後読み」については正規表現の解説- 上級編が詳しいです。
↑で使っている正規表現

(?<!\\),

では、

(?<!\\)

が「ゼロ幅の否定的後読み」を使っている部分で、これにより、

  • ","にマッチするが、
  • その前の文字が"\"にマッチするものは除く

文字列を示す正規表現になります。後はsplitの引数でそれを指定してやればOK。