用一个单词替换所有出现的单词

时间:2013-07-01 15:35:23

标签: java regex

我正在编写一个正则表达式以匹配“日本”的每一次出现,并将其替换为“日本”..为什么以下不起作用?并且“日本”可以在句子中和句子中的任何地方多次出现。我想替换所有出现的事件

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"));

}

3 个答案:

答案 0 :(得分:7)

这里不需要正则表达式,也不需要Pattern和Matcher类。简单使用String.replace()就可以了:

input = input.replace("japan", "Japan");

答案 1 :(得分:2)

replaceAll正在按计划运作。

来自你的评论:

  

正则表达式匹配的计算结果为false。

此语句的评估结果为false

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

String#matches与完整的String匹配。由于String "japan"不是正则表达式,您可以执行

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

答案 2 :(得分:0)

使用input.matches(regex)^

$ 自动锚定您的模式。只需使用.*围绕您的模式即可进行匹配。

但是,replaceAll将不再适用。因此,您必须将(.*?)japan(.*?)替换为$1Japan$2