0

「japan」のすべての出現に一致し、「Japan」に置き換える正規表現を書いています..以下が機能しないのはなぜですか? また、「japan」は文のどこにでも複数回出現する可能性があります。すべてのオカレンスを置き換えたい

public static void testRegex()
{
    String input = "The nonprofit civic organization shall comply with all other requirements of section 561.422, japan laws, in obtaining the temporary permits authorized by this act.";
    String regex = "japan";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);
    System.out.println(input.matches(regex));
    System.out.println(input.replaceAll(regex, "Japan"));

}
4

3 に答える 3

7

ここでは正規表現は必要ありません。また、Pattern クラスと Matcher クラスも必要ありません。の単純な使用はString.replace()うまくいきます:

input = input.replace("japan", "Japan");
于 2013-07-01T15:37:33.783 に答える
2

replaceAll意図したとおりに動作しています。

あなたのコメントから:

正規表現の一致は false と評価されます。

このステートメントは次のように評価されますfalse

System.out.println(input.matches(regex));

asString#matchesは完全な と一致しStringます。は正規表現ではないためString "japan"、次のことができます

System.out.println(input.contains(regex));
于 2013-07-01T15:40:53.800 に答える
0

input.matches(regex) ^と でパターンを自動固定$します。パターンを で囲むだけで.*マッチします。

しかし、その後、それはもう機能しreplaceAllません。したがって、に置き換える必要があり(.*?)japan(.*?)ます$1Japan$2

于 2013-07-01T15:52:21.017 に答える