Java 正则表达式 matcher.find() 一直为true

知识点:

*

匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

+

匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。

matches(): 全匹配 为true

find(): 部分匹配 为true

判断字符串中是否有数字:

判断字符串中是否有数字

 String str2 = "curStaff[].staffId(\"12\").staffName"; 

表达式:

String regExp =  "[0-9]*";

代码:

public static void main(String[] args) {testNums();
}public static void testNums(){String str2 = "1aa564sdfp5324";System.out.println("======= "+str2+" =========");hasDigit(str2);str2 = "234564";System.out.println("======= "+str2+" =========");hasDigit(str2);str2 = "asdfasdfa";System.out.println("======= "+str2+" =========");hasDigit(str2);str2 = "curStaff[33].staffId(\"12yan\").staffName12";System.out.println("======= "+str2+" =========");hasDigit(str2);
}public static boolean hasDigit(String content) {String regExp =  "[0-9]*";Pattern pattern=Pattern.compile(regExp);Matcher m = pattern.matcher(content);System.out.println(" matches nums: " +m.matches());System.out.println(" find nums: " +m.find());return m.find();
}

结果:

======= 1aa564sdfp5324 =========matches nums: falsefind nums: true
======= 234564 =========matches nums: truefind nums: true
======= asdfasdfa =========matches nums: falsefind nums: true
======= curStaff[33].staffId("12yan").staffName12 =========matches nums: falsefind nums: true

find 都为true, 为啥呢? 再看表达式 String regExp =  "[0-9]*"; * 可以为0次,所以出问题了。

把“*”改成“+”: String regExp =  "[0-9]+";

结果:

======= 1aa564sdfp5324 =========matches nums: falsefind nums: true
======= 234564 =========matches nums: truefind nums: false
======= asdfasdfa =========matches nums: falsefind nums: false
======= curStaff[33].staffId("12yan").staffName12 =========matches nums: falsefind nums: true

这样就达到目标了。

总结:

在写正则表达的时候要注意细节,比如匹配数字的时候,至少要存在一次,这时候得用“+”,用“*”就会出问题。如果出现了差错,就看下表达式中相关语法具体的含义,这样就能快速定位到问题。

正则表达式 matcher.find() 一直为true相关推荐

  1. java matcher group_JAVA正则表达式matcher.find()和 matcher.matches()的区别

    1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...

  2. JAVA正则表达式,matcher.find()和 matcher.matches()的区别

    1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...

  3. Java正则表达式--Matcher.group函数的用法

    https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...

  4. java matcher.group_详解正则表达式Matcher类中group方法

    前言 同事把一个excel表给我,里面的数据大概有几千的样子吧.自己需要把里面的数据一个一个拿出来做一个http请求,对得到的结果进行过滤,然后再写到上面去.这是就涉及到用脚本来进行操作了,于是自己搞 ...

  5. Java正则表达式 - Matcher

    Matcher类: 使用Matcher类,最重要的一个概念必须清楚: 组(Group) ,在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组 ...

  6. java 正则表达式 Matcher

    matches&lookingAt&find Pattern p=Pattern.compile("\\d"); Matcher m=p.matcher(" ...

  7. java matcher group_Java正则表达式matcher.group()用法

    java中正则匹配 group是针对()来说的,因为你匹配到的结果是一组,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西. 代码: ...

  8. 第十六章《正则表达式》第4节:Matcher类

    16.3小节所介绍的Pattern类代表了正则表达式,它的功能不是很强,如果程序员想用正则表达式完成替换等更复杂的操作,必须使Matcher类.Matcher类也位于java.util.regex包下 ...

  9. Java正则表达式及Pattern与Matcher使用详解

    文章目录 一.正则表达式详解 1.符号定义 (1)基本书写符号 (2)限定符 (3)匹配字符集 (4)分组构造 (5)字符转义 2.常用正则表达式举例 3.Java中RegularExpression ...

最新文章

  1. 通过OGG实现多源端数据库的数据集中分发
  2. js mysql 住宿系统_[源码和文档分享]基于JavaScript和MySQL实现的酒店管理系统
  3. 初中计算机学情分析,初中信息技术教学计划
  4. work php高性能,RabbitMQ之工作(Work)模式(PHP版)-Go语言中文社区
  5. zoj2271 Chance to Encounter a Girl(DP)
  6. Idea Tomcat启动报异常CannotLoadBeanClassException
  7. 逃离深圳的华为,原来可以这么美:研发小姐姐第一天上班游记
  8. 「知识图谱」领域近期值得读的 6 篇顶会论文
  9. Docker的使用、底层原理及常用软件docker下载
  10. 日本富士通正考虑将PC业务并入联想
  11. 古代婚姻和现代社会矛盾了。导致大量大龄女性未婚
  12. 前端基础到进阶(1):HTML基础入门
  13. nginx下部署showdoc
  14. 让旧 Windows 电脑一键变成 Chromebook,Google 收购 Neverware!
  15. symfony3 yml配置文件详解
  16. 软件开发中的EJB是什么?
  17. Qt数据库应用20-csv文件转xls
  18. uniapp 打包时报错:云端服务器返回错误,此应用DClound的Appdid非当前账号所有。
  19. 教师语言表达-语言互动
  20. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月8日~8月14日)...

热门文章

  1. JS中Class类的详解
  2. 如何查看显卡支持的CUDA版本
  3. 小程序技术助力智慧家居生态互联
  4. UIDynamicItemBehavior-动画效果:增加各种物理特性
  5. R语言学习笔记:生成随机数
  6. html5 语音包,在vue中使用vue-i18n按需加载语言包
  7. PTMs:NLP预训练模型的全面总结
  8. 30%“苹果税”直砍一半,网友:库克这是用“富人税”养平民
  9. 陌陌越来越赚钱,但它还不是移动版YY
  10. Linux 命令行与shell编程 第10章 构建基本脚本