正则表达式 matcher.find() 一直为true
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相关推荐
- java matcher group_JAVA正则表达式matcher.find()和 matcher.matches()的区别
1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...
- JAVA正则表达式,matcher.find()和 matcher.matches()的区别
1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...
- Java正则表达式--Matcher.group函数的用法
https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...
- java matcher.group_详解正则表达式Matcher类中group方法
前言 同事把一个excel表给我,里面的数据大概有几千的样子吧.自己需要把里面的数据一个一个拿出来做一个http请求,对得到的结果进行过滤,然后再写到上面去.这是就涉及到用脚本来进行操作了,于是自己搞 ...
- Java正则表达式 - Matcher
Matcher类: 使用Matcher类,最重要的一个概念必须清楚: 组(Group) ,在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组 ...
- java 正则表达式 Matcher
matches&lookingAt&find Pattern p=Pattern.compile("\\d"); Matcher m=p.matcher(" ...
- java matcher group_Java正则表达式matcher.group()用法
java中正则匹配 group是针对()来说的,因为你匹配到的结果是一组,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西. 代码: ...
- 第十六章《正则表达式》第4节:Matcher类
16.3小节所介绍的Pattern类代表了正则表达式,它的功能不是很强,如果程序员想用正则表达式完成替换等更复杂的操作,必须使Matcher类.Matcher类也位于java.util.regex包下 ...
- Java正则表达式及Pattern与Matcher使用详解
文章目录 一.正则表达式详解 1.符号定义 (1)基本书写符号 (2)限定符 (3)匹配字符集 (4)分组构造 (5)字符转义 2.常用正则表达式举例 3.Java中RegularExpression ...
最新文章
- 通过OGG实现多源端数据库的数据集中分发
- js mysql 住宿系统_[源码和文档分享]基于JavaScript和MySQL实现的酒店管理系统
- 初中计算机学情分析,初中信息技术教学计划
- work php高性能,RabbitMQ之工作(Work)模式(PHP版)-Go语言中文社区
- zoj2271 Chance to Encounter a Girl(DP)
- Idea Tomcat启动报异常CannotLoadBeanClassException
- 逃离深圳的华为,原来可以这么美:研发小姐姐第一天上班游记
- 「知识图谱」领域近期值得读的 6 篇顶会论文
- Docker的使用、底层原理及常用软件docker下载
- 日本富士通正考虑将PC业务并入联想
- 古代婚姻和现代社会矛盾了。导致大量大龄女性未婚
- 前端基础到进阶(1):HTML基础入门
- nginx下部署showdoc
- 让旧 Windows 电脑一键变成 Chromebook,Google 收购 Neverware!
- symfony3 yml配置文件详解
- 软件开发中的EJB是什么?
- Qt数据库应用20-csv文件转xls
- uniapp 打包时报错:云端服务器返回错误,此应用DClound的Appdid非当前账号所有。
- 教师语言表达-语言互动
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月8日~8月14日)...