0

以下のコードの関連スニペットを見つけてください。

public static final String GREEK = "(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)";

public static int setHasGreek(String str) {
    if (str.toLowerCase().matches(".*\\b"+GREEK+"\\b.*")) return 1;
    return 0;
}

文字列がギリシャ語の文字列 (「ガンマ」や「デルタ」など) の場合、関数は正常に機能しますが、文字列が「NFkappaB」の場合は機能しません。誰かが正規表現を変更してアドバイスを提供できますか?

ありがとうございました。

4

1 に答える 1

1

単語の境界を使用しています\b 。あなたのようなものをキャプチャNFkappaBするには、その制限を削除する必要があります。

if (str.toLowerCase().matches(".*"+GREEK+".*")) return 1;

これは明らかにそのようなものをキャプチャします(2文字で始まり1で終わるなど)alphagammakappaキャプチャするための特定のルールがない限り、それを回避するためのルックアラウンドを含む複雑な正規表現なしでできることはほとんどありません。NFkappaB

于 2012-05-07T15:57:15.877 に答える