解决`Illegalgroupreference:groupindexismissing`的两种方式
- 人工智能
- 2025-09-08 05:18:02

说明:记录使用String API的错误,报错信息如下:
java.lang.IllegalArgumentException: Illegal group reference: group index is missing at java.util.regex.Matcher.appendReplacement(Matcher.java:819) ~[?:1.8.0_402] at java.util.regex.Matcher.replaceAll(Matcher.java:955) ~[?:1.8.0_402] at java.lang.String.replaceAll(String.java:2223) ~[?:1.8.0_402] 场景在使用String的这个API,来替换字符串的时候抛出的,如下:
public static void main(String[] args) { String str = "我对钱不感兴趣"; System.out.println(str.replaceAll("钱", "美金($)")); }原因是使用了美元符号($),美元符号是在底层替换的时候,是有特殊含义的,不能出现在第二个参数里;
解决 方法一可以在替换前,使用APIMatcher.quoteReplacement过一遍,如下:
public static void main(String[] args) { String str = "我对钱不感兴趣"; System.out.println(str.replaceAll("钱", Matcher.quoteReplacement("美金($)"))); } 方法二或者手动添加转义符,如下:
public static void main(String[] args) { String str = "我对钱不感兴趣"; System.out.println(str.replaceAll("钱","美金(\\$)")); }两种效果一样,如果是确定的字符串,可以用方法二,手动转义,如果是不确定的,可以使用方法一;
解决`Illegalgroupreference:groupindexismissing`的两种方式由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“解决`Illegalgroupreference:groupindexismissing`的两种方式”