^M
次のようなものを使用して、行末としてDOS を持つファイルをスキャンしようとしています。
Scanner file = new Scanner(new File(saveToFilePath)).useDelimiter("(?=\^M)")
つまり、テキストを 1 行ずつ読みたいだけでなく^M
、行末を示す も保持したいのです。これは簡単ですが、正規表現\n
が苦手で、DOSに夢中になっています。end-of-line
^M
次のようなものを使用して、行末としてDOS を持つファイルをスキャンしようとしています。
Scanner file = new Scanner(new File(saveToFilePath)).useDelimiter("(?=\^M)")
つまり、テキストを 1 行ずつ読みたいだけでなく^M
、行末を示す も保持したいのです。これは簡単ですが、正規表現\n
が苦手で、DOSに夢中になっています。end-of-line
いくつかの研究の後、私はついにそれを手に入れました。以下は、^M を見つけて保持するための正しい正規表現です。それがCTRL-Mを意味することを知らなかったので、あなたの回答のいくつかがそれを助けました. 何らかの理由で、「M」が正規表現に含まれていないため、なぜ機能するのかわかりませんが、機能します。これにより、とらえどころのない "^M" を検索するときに、(先読み正規表現を使用して) 区切り記号を含む行の区切り記号が得られます。
Scanner file = new Scanner(source).useDelimiter("(?=\p{Cntrl})")
みんなありがとう。