问题提出
最近在工作中需要自己写正则表达式,而且是用 groovy,本以为 groovy 是沿用了 java.util.regex 包,只要 java 中运行没问题就可以,结果问题就出现了。
java 中程序如下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by syp on 17/4/26.
*/
public class zhengze {
public static void main(String[] args){
// Pattern pattern = Pattern.compile("\\w+");
// Matcher matcher = pattern.matcher("asdasd");
// System.out.println(matcher.find());
System.out.print("1+2".replaceAll("^[\\d\\+]+$","sss"));
}
}
运行出来结果没问题。
换成 groovy 中的程序如下:
System.out.print("1+2".replaceAll("^[\\d\\+]+$","sss"));
报错信息如下:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/usercode/file.g: 2: illegal string body character after dollar sign;
solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 2, column 34.
System.out.print("1+2".replaceAll("^[\\d\\+]+$","sss"));
^
1 error
解决方法
将正则表达式中的$
换成\$
,程序如下:
System.out.print("1+2".replaceAll("^[\\d\\+]+\$","sss"));
疑问
为啥教程上都是说^
和$
,而实际中对$
需要转义呢?而对^
不需要?
求大神解答。