我有一个字符串,当我尝试运行replaceAll
方法,我得到这个奇怪的错误:
String str = "something { } , op";
str = str.replaceAll("o", "\n"); // it works fine
str = str.replaceAll("{", "\n"); // does not work
我得到一个奇怪的错误:
Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal repetition {
我怎么能代替的出现"{"
?
甲{
是用于范围重复的正则表达式元字符{min,max}
要匹配文字{
你需要用它前面逃脱它\\
:
str = str.replaceAll("\\{", "\n"); // does work
如果你真的打算更换单个字符,而不是正则表达式(这是你仿佛想在这里做),你应该使用.replace()
而不是.replaceAll()
尽管它的名字, .replace()
将取代所有出现,而不只是第一个。
而如果你想知道, String
实现CharSequence
,所以.replace("{", "\n")
会工作。
退出:
str = str.replaceAll("\\{", "\n");
这是必要的,因为第一个参数replaceAll()
是一个正则表达式 ,以及{
在Java正则表达式特殊的意义(这是一个重复操作符,因此错误消息)。