String.ReplaceAll中的正则表达式

时间:2013-04-02 11:30:38

标签: java regex string

我的代码不喜欢美元符号,必须在替换中保持可变。

String s1= "this is amount <AMOUNT> you must pay";
s1.replaceAll("<AMOUNT>", "$2.60");
System.out.print(s1);

我有例外java.lang.IllegalArgumentException: Illegal group reference

我冒险获得字符串"this is amount $2.60 you must pay"

如何更改我的代码以获得所需的结果?

6 个答案:

答案 0 :(得分:5)

如果您不需要使用正则表达式(您似乎没有),请改用replace

s1 = s1.replace("<AMOUNT>", "$2.60");

答案 1 :(得分:3)

您必须像这样更改代码:

    String s1= "this is amount <AMOUNT> you must pay";
    s1 = s1.replaceAll("<AMOUNT>", "\\$2.60");
    System.out.print(s1);

1)转义$字符

2)您需要保存replaceAll方法的结果,因此请再次将其分配给s1

答案 2 :(得分:2)

只需使用替换。无需使用正则表达式。

s1 = s1.replace("<AMOUNT>", "$2.60");

答案 3 :(得分:0)

正则表达式使用特殊字符$来表示表达式中的组。这就是你迷茫的原因。如果你想要文字的东西,就逃避吧。

public static void main(String[] args) {  
    String s1= "this is amount <AMOUNT> you must pay";
    System.out.print(s1.replaceAll("<AMOUNT>", "\\$2.60"));
}     

答案 4 :(得分:0)

不使用正则表达式时,应使用replace()。

此外,您应该将结果字符串存储在其他位置,例如

String s1 = "this is amount <AMOUNT> you must pay";
String s2 = s1.replace("<AMOUNT>", "$2.60");
System.out.println(s2);

答案 5 :(得分:0)

\\符号前使用双斜杠$

String s1 = "this is amount <AMOUNT>you must pay";
s1 =s1.replaceAll("<AMOUNT>", "\\$2.60");
System.out.print(s1);