1

正規表現で次の問題が発生しています。テキスト (txt) ファイルから単語を読み取り、別のファイルに書き込み、1 行に 1 単語を書き込むプログラムを作成しました。

read という単語に特殊文字が含まれている場合を除き、すべて正常に機能ľščťžýáíéします。正規表現は文字を削除し、特別な文字があった場所で単語を分割します。

例:
入力:

I am Jožo.

出力:

I
am
Jo
o

コードのスニペットを次に示します。

while( (line = br.readLine())!= null ){ 
  Pattern p = Pattern.compile("[\\w']+");
  Matcher m = p.matcher(line);
}
4

2 に答える 2

5

この正規表現の代わりに:

Pattern.compile("[\\w']+")

Unicode ベースを使用:

Pattern.compile("[\\p{L}']+")

これは\\w、Java のデフォルトでは、ASCII 文字、数字 0 ~ 9、およびアンダースコアのみに一致するためです。

別のオプションは、修飾子を使用することです

Pattern.UNICODE_CHARACTER_CLASS

このような:

Pattern.compile("[\\w']+", Pattern.UNICODE_CHARACTER_CLASS)
于 2013-07-11T20:44:31.253 に答える