1. 程式人生 > >[深坑]關於groovy正則表示式中的限位符 `^` 和 `$`

[深坑]關於groovy正則表示式中的限位符 `^` 和 `$`

問題提出

最近在工作中需要自己寫正則表示式,而且是用 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"));

疑問

為啥教程上都是說^$,而實際中對$需要轉義呢?而對^不需要?
求大神解答。