JDK8-正则匹配-String.matches坑

由于业务需求编写需要检测匹配获取字符串中的0的值的正则表达式,测试情况是没有问题的
在这里插入图片描述

代码一上死活都匹配不上,琢磨了半天

String regex = "[0][.][0][,]|[,][0][.][0][,]|[,][0][.][0]";
String string = "0.0,2.263,0.0,2.261,3.271,0.0";
System.out.println(string.matches(regex)); //返回false

随后我进入matches源码文档上已经作者已经写出使用该方法是检测字符串是否与正则表达式完全匹配
Tells whether or not this string matches the given(通知此字符串是否与给定的字符串匹配
在这里插入图片描述
按照方法的意思那么就是说我这个表达式只能匹配",0.0,“或"0.0,“或”,0.0”,果然测试如下

String regex = "[0][.][0][,]|[,][0][.][0][,]|[,][0][.][0]";
String string = ",0.0,";
System.out.println(string.matches(regex)); //返回true

我们需要对我们的正则表达式改进,1对()代表1种情况,别每种情况前后都需要加上匹配符号^/*/&

//3种情况
//(^[0][.][0][,].*) : 匹配"0"开头 内容"0.0," 在","后面匹配任意字符
//(.*[,][0][.][0][,].*) : 匹配","前面任意字符后面接着内容是",0.0,"在","后面匹配任意字符
//(.*[,][0][.][0]$) : 匹配","前面任意字符后面接着内容是",0.0"已"0"结尾的
String regex = "(^[0][.][0][,].*)|(.*[,][0][.][0][,].*)|(.*[,][0][.][0]$)";
String string = "0.0,2.263,0.0,2.261,3.271,0.0";
System.out.println(string.matches(regex)); //返回true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JolyouLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值