[深坑]關於groovy正則表示式中的限位符 `^` 和 `$`
阿新 • • 發佈:2019-02-19
問題提出
最近在工作中需要自己寫正則表示式,而且是用 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"));
疑問
為啥教程上都是說^
和$
,而實際中對$
需要轉義呢?而對^
不需要?
求大神解答。