0

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

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 回答