Java String からすべての単語を抽出したいと考えています。
word は任意のヨーロッパ言語で書くことができ、スペースを含まず、アルファベット記号のみを含みます。
ただし、ハイフンを含めることができます。
Java String からすべての単語を抽出したいと考えています。
word は任意のヨーロッパ言語で書くことができ、スペースを含まず、アルファベット記号のみを含みます。
ただし、ハイフンを含めることができます。
正規表現に縛られていない場合は、BreakIterator、特にgetWordInstance()メソッドも見てください。
単語境界分析は、検索および置換機能で使用されるほか、ユーザーがダブルクリックで単語を選択できるようにするテキスト編集アプリケーション内でも使用されます。単語選択により、単語内および単語に続く句読点が正しく解釈されます。記号や句読点など、単語の一部ではない文字には、両側に単語区切りがあります。
のバリエーション(?<!\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 文字クラスなどを使用する必要がある場合があります (トピックについて調べている間、そのままにしておいてください)。
これは 1 つの単語に一致します。
`([^\s]+)`