Joh*_*dep 25 java regex string replaceall
我有一个字符串,当我尝试运行该replaceAll方法时,我收到这个奇怪的错误:
String str = "something { } , op";
str = str.replaceAll("o", "\n"); // it works fine
str = str.replaceAll("{", "\n"); // does not work
Run Code Online (Sandbox Code Playgroud)
我得到一个奇怪的错误:
Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal repetition {
Run Code Online (Sandbox Code Playgroud)
我怎样才能替换出现的"{"?
cod*_*ict 39
A {是用于范围重复的正则表达式元字符{min,max}.要匹配一个文字,{你需要通过前面的一个来逃避它\\:
str = str.replaceAll("\\{", "\n"); // does work
Run Code Online (Sandbox Code Playgroud)
fge*_*fge 15
如果你真的打算替换单个字符而不是正则表达式(这是你似乎想要在这里做的),你应该使用.replace(),而不是.replaceAll().尽管它的名称,.replace()将替换所有出现,而不仅仅是第一次出现.
如果你想知道,String工具CharSequence,那.replace("{", "\n")将工作.
逃避它:
str = str.replaceAll("\\{", "\n");
Run Code Online (Sandbox Code Playgroud)
这是必需的,因为第一个参数replaceAll()是正则表达式,并且{在Java正则表达式中具有特殊含义(它是重复运算符,因此是错误消息).