[深坑]关于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"));

疑问

为啥教程上都是说^$,而实际中对$需要转义呢?而对^不需要?
求大神解答。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值