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