あなたのパターンでは、コンマまたは行末の組み合わせが必要です。ここでの最善の方法は、交代のある非キャプチャ グループです。CRLF の組み合わせを考慮する必要がない場合は、文字クラスが機能する可能性がありますが、それは必ずしも適切な仮定ではありません。
これが例です。私は Clojure を使用して Java API を駆動しています。Clojure に慣れていなくても、少し時間をかければ要点を理解できるはずです。セミコロンの後のビットはコメントです。
; define a function that will return a scanner on user input
; with a given pattern
user=> (defn scanner [input delimiter]
(-> (java.util.Scanner. input) (.useDelimiter delimiter)))
#'user/scanner
; define the input
user=> (def input "Thomson,Alfred,NY,00192838,USA\nVincent,Ramblè,PA,0033928283,FRANCE")
#'user/input
; create the scanner
; (:?) is a non capturing group
; the | in the middle tells the group to look for a or b
; first alternative is a comma
; second alternative is a newline followed by 0 or 1
; carriage returns.
; The javadoc for the java.util.Pattern class really helps
user=> (def myscanner (scanner input "(:?,|\n\r?)"))
#'user/myscanner
; quick/dirty way to call next on the scanner 10 times and print
; the result of each call
user=> (dotimes [n 10] (println (.next myscanner)))
Thomson
Alfred
NY
00192838
USA
Vincent
Ramblè
PA
0033928283
FRANCE
しかし、本当に CSV を実行したい場合、この問題は何度も解決されています。CSV の奇抜な部分を処理するライブラリはたくさんあります。例http://commons.apache.org/proper/commons-csv (これはほんの一例です。使用する前に評価する必要があります)。
幸運を!