13

最後に繰り返し文字セットを持つ単語を識別する正規表現を作成する必要があります。次のコード フラグメントによると、繰り返し文字セットはです。これが検出されて表示されるように、正規表現を作成する必要があります。An

次のコードによると、\\w任意の単語文字 (数字、文字、または特殊文字を含む) と一致します。しかし、私は英語の文字を識別したいだけです。

String stringToMatch = "IranAnAn";
Pattern p = Pattern.compile("(\\w)\\1+");
Matcher m = p.matcher(stringToMatch);
if (m.find())
{
    System.out.println("Word contains duplicate characters " + m.group(1));
}

アップデート

Word contains duplicate characters a
Word contains duplicate characters a
Word contains duplicate characters An
4

2 に答える 2

9

セット内のできるだけ多くの文字をキャッチしたいので、代わりに(\\w)使用する必要が(\\w+)あり、シーケンスを最後に配置する必要があるため、追加する必要があります(繰り返しを検出するのに役に立たない後を$削除しました: 1 回だけ繰り返す必要があります):+\\1

Pattern p = Pattern.compile("(\\w+)\\1$");

その後、プログラムはAn期待どおりに出力します。

最後に、ASCII 文字のみをキャプチャしたい場合は、[a-zA-Z]代わりに\\w次を使用できます。

Pattern p = Pattern.compile("([a-zA-Z]+)\\1$");

文字セットを 2 文字以上にしたい場合は、次のようにします。

Pattern p = Pattern.compile("([a-zA-Z]{2,})\\1$");
于 2013-07-22T17:45:52.037 に答える
1

「英字のみ」が AZ と az を意味する場合、次の正規表現が機能します。

".*([A-Za-z]{2,})\\1$"
于 2013-07-22T17:51:11.523 に答える