3

Java String からすべての単語を抽出したいと考えています。

word は任意のヨーロッパ言語で書くことができ、スペースを含まず、アルファベット記号のみを含みます。

ただし、ハイフンを含めることができます。

4

3 に答える 3

3

正規表現に縛られていない場合は、BreakIterator、特にgetWordInstance()メソッドも見てください。

単語境界分析は、検索および置換機能で使用されるほか、ユーザーがダブルクリックで単語を選択できるようにするテキスト編集アプリケーション内でも使用されます。単語選択により、単語内および単語に続く句読点が正しく解釈されます。記号や句読点など、単語の一部ではない文字には、両側に単語区切りがあります。

于 2010-06-29T12:16:54.147 に答える
2

のバリエーション(?<!\S)\S+(?!\S)、つまり非空白文字の任意の最大シーケンスを使用できます。

  • 文字列の先頭と末尾の「単語」に一致するように、否定ルックアラウンドが使用されます
  • を独自の文字クラスに\S置き換えて、より具体的なものを探します
    • (例:[A-Za-z-]など)

[a-z-]アルファベット文字クラスとして使用して、アイデアを説明する簡単な例を次に示します。

    String text = "--xx128736f-afasdf2137asdf-12387-kjs-23xx--";
    Pattern p = Pattern.compile(
        "(?<!alpha)alpha+(?!alpha)".replace("alpha", "[a-z-]")
    );
    Matcher m = p.matcher(text);
    while (m.find()) {
        System.out.println(m.group());
    }

これは以下を出力します:

--xx
f-afasdf
asdf-
-kjs-
xx--

参考文献


しかし、アルファベットはどうあるべきですか?

Unicode 文字クラスなどを使用する必要がある場合があります (トピックについて調べている間、そのままにしておいてください)。

于 2010-06-29T09:33:20.427 に答える
0

これは 1 つの単語に一致します。

`([^\s]+)`
于 2010-06-29T09:34:17.940 に答える