我想替换像
这样的所有实例 带有 imagepath 的{IMAGE:imagename} ,
使用消息{MESSAGE:messagename} 。
我尝试使用string类的replaceAll函数,但无法实现相同的功能。
示例代码:
String str = "HELLO WORLD {IMAGE:abcd}";
str = str.replaceAll("{IMAGE:abcd}", "defg");
输出
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition
{IMAGE:abcd}
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.closure(Pattern.java:2775)
at java.util.regex.Pattern.sequence(Pattern.java:1889)
at java.util.regex.Pattern.expr(Pattern.java:1752)
at java.util.regex.Pattern.compile(Pattern.java:1460)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.replaceAll(String.java:2189)
at com.example.WorkSheet.main(WorkSheet.java:28)
答案 0 :(得分:3)
{
是一个正则表达式元字符,应该转义,试试这个
str = str.replaceAll("\\{IMAGE:abcd}", "defg");
请注意,转义{
就足够了,正则表达式编译器会理解}
被用作常规字符。
答案 1 :(得分:0)
{
和}
是正则表达式中用于标记重复的特殊字符。尝试使用\\
转义它们或使用Matcher.quoteReplacement("{IMAGE:abcd}")
,它会转义所有特殊字符。
答案 2 :(得分:0)
replaceAll
方法将参数设为replaceAll(String Regex, String replacement)
,其中Regex
应为正则表达式。所以你可能想要使用:
str.replaceAll("\\{IMAGE:abcd}","defg");
而不是
str.replaceAll("{IMAGE:abcd}", "defg");
答案 3 :(得分:0)
您必须转义字符“{”,如下所示:
public class A{
public static void main(String[] args) {
String str = "HELLO WORLD {IMAGE:abcd}";
str = str.replaceAll("\\{IMAGE:abcd\\}", "defg");
System.out.println(str);
}
}
我认为它会解决你的问题。
答案 4 :(得分:0)
试。
str = str.replaceAll("\\{IMAGE:abcd\\}", "defg");
答案 5 :(得分:0)
import java.util.*;
public class A
{
public static void main(String [] args)
{
String str = "HELLO WORLD {IMAGE:abcd}";
str = str.replaceAll("\\{IMAGE:abcd}", "defg");
System.out.println(str);
}
}