Java的String的replaceAll方法给予非法重复错误?Java的String的repla

2019-05-12 07:08发布

我有一个字符串,当我尝试运行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 {  

我怎么能代替的出现"{"

Answer 1:

{是用于范围重复的正则表达式元字符{min,max} 要匹配文字{你需要用它前面逃脱它\\

str = str.replaceAll("\\{", "\n"); // does work


Answer 2:

如果你真的打算更换单个字符,而不是正则表达式(这是你仿佛想在这里做),你应该使用.replace()而不是.replaceAll() 尽管它的名字, .replace()将取代所有出现,而不只是第一个。

而如果你想知道, String实现CharSequence ,所以.replace("{", "\n")会工作。



Answer 3:

退出:

str = str.replaceAll("\\{", "\n"); 

这是必要的,因为第一个参数replaceAll()是一个正则表达式 ,以及{在Java正则表达式特殊的意义(这是一个重复操作符,因此错误消息)。



文章来源: Java String ReplaceAll method giving illegal repetition error?