java正则匹配的坑_java正则表达式入坑指南
在日常开发工作中,无论你使用的语言是java、python、shell、golang还是C#, 正则表达式是编程语言中几乎绕不开的话题。有了它,可以帮你快速定位到符合条件的文本内容。今天小编带大家一起来学习下正则表达式,相信通过这篇文章的介绍,能为以后的工作提供一个更清晰的思路。
正则表达式初体验
首先给大家介绍一下正则表达式使用的类,在java.util.regex 包中主要包括以下三个类:
Pattern 类
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
接下来,通过两个例子为大家演示正则表达式的使用。
使用正则表达式校验手机号是否合法:
例子输出结果为:
电话字符串[18488888888]是否合法? [false]
电话字符串[14788888888]是否合法? [true]
除了可以帮助大家快速校验数据格式是否正确外,在使用正则表达式时,我们还可以快速提取目标格式的数据内容,这个优势所借助的工具即是捕获组。
捕获组定义:把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
((A)(B(C)))
(A)
(B(C))
(C)
可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。另外还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。
下面的例子为大家演示通过捕获组生成目标字符串:
实例输出结果为:
DSCS0001/20200113/1898888888820200113101638.mp3
通过以上两个实例,我们可以清晰的看出正则表达式在数据的验证和提取目标格式字符串的强大功能。
小福利
下面是小编为大家整理的一些在工作中常用的正则表达式,以期能帮助到大家。
匹配中文字符:
System.out.println(Pattern.matches("[\u4e00-\u9fa5]", "好"));
匹配Email地址
System.err.println(Pattern.matches("\\w[-\\w.+]*@([A-Za-z0-9][A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", "hello2020@qq.com"));
m-n 位的数字
System.out.println(Pattern.matches("^\\d{1,3}$", "123"));
密码必须由字母和数字组成,且长度要在6-12位之间
System.out.println(Pattern.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$", "123hello456"));
一年的12个月(01~09和1~12) : ^(0?[1-9]|1[0-2])$
Pattern.matches("^((0?[1-9])|(1[0-2]))$", "11")
匹配时分秒
System.out.println(Pattern.matches("([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]", "11:10:11"));
IP地址格式
System.out.println(Pattern.matches("((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}", "192.168.21.37"));
网址匹配包含http、https、ftp协议
System.out.println(Pattern.matches("^(https?|ftp)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "http://www.bdqn.cn/"));
小结
今天这篇文章,通过两个实例为大家详细介绍了正则表达式在编程过程中的强大功能:
1. 校验数据格式是否正确
2. 提取目标格式的字符串内容
结合小编整理的一些作用广泛的表达式,相信大家对于我们今天的主题正则表达式有了一个更为清晰的认知。
怎么样,你了解了么?欢迎和我们一起探讨。
更多IT技术干货,请关注课工场,和我们一起关注前沿技术,快速提升。
java正则匹配的坑_java正则表达式入坑指南相关推荐
- java正则匹配双字节_Java 正则表达式详解(二)
Java常用正则表达式匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用 ...
- java正则匹配英文句号_java正则表达式最简单 学习教程
本大教程以一个验证手机号的表达式为例,学完本例后,基本上所有的表达式都能看懂了,但是如果想要达到上手就能写的程度,还需要多练习多测试 呀! 来看 这样一个代码 String mobilePhoneRe ...
- java正则匹配下划线_java正则表达式-匹配中文数字字母下划线
正则表达式用来指定字符串模式.当你需要定位匹配某种模式的字符串时就可以使用正则表达式.例如,我们下面的一个例程就是在一个HTML文件中通过查找字符串模式来定位所有的超链接. 当然,为了指定一种 ...
- java 正则提取大于等于号_Java正则表达式
一.简述 在字符串比较时,简单的操作可以使用一些算法来查找或匹配,如要判断一个端口地址地址是否合法,可以简单的判断其是否在0-65536之间. 但是,有一些字符匹配操作使用这种方法非常复杂,如匹配一个 ...
- java正则表达式 %_java正则表达式入坑指南
在日常开发工作中,无论你使用的语言是java.python.shell.golang还是C#, 正则表达式是编程语言中几乎绕不开的话题.有了它,可以帮你快速定位到符合条件的文本内容.今天小编带大家一起 ...
- Java正则匹配美元表达式_Java中的正则表达式“ $”(美元)元字符
子表达式/元字符" $ "与行尾匹配. 例子1import java.util.regex.Matcher; import java.util.regex.Pattern; pub ...
- java正则匹配下划线_java验证,”支持6-20个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?...
第64课 C++中的异常处理(上) 1. C++内置的异常处理:try-catch (1)try语句处理正常代码逻辑 (2)catch语句处理异常情况 (3)try语句中的异常由对应的catch语句处 ...
- java 正则 不包含字符串_java正则表达式找出不包含特定字符串
看到有同学询问这个都好几天了还没解决,就摆渡了哈, 以下纯属copy, ======================================= 正则表达式中有前瞻(Lookahead)和后顾( ...
- java正则匹配英文句号_Scala 正则表达式 0411
Scala 正则表达式 Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式.以下实例演示了使用正则表达式查找单词 Scala : import scala ...
最新文章
- 拥抱AI视觉,加油站可以很“智慧”
- u-boot分析——struct gd_t与struct bd_t
- mysql,mybatis常用小知识点
- RHEL6.3配置文件共享(3) Samba服务之一
- Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?
- jitter单位_产生jitter的原因
- 我的2017:从工作再到学生
- vue变量赋值到html,jsvue data变量相互赋值后被实时同步的解决步骤js大全-js开发...
- React Native集成阿里云推送----广播推送
- LeetCode 9 回文数 c语言
- 虚拟服务器忘记密码,Win7系统下VMware虚拟机忘记开机密码如何解决
- 15、Java基础---继承和访问属性
- acwing 合唱队形
- Storyboard故事板
- 观点 | 如何让智慧城市这头巨象跳芭蕾?
- 自己追加内存【注意事项】
- unity5.6.5适配Android P刘海屏,两侧去黑边
- 【操作系统】RR算法
- Android自定义View,Android炫酷的音乐频谱进度条,变化自如的音乐进度条
- 怎么储存才能让CPU永久性使用导热硅脂
热门文章
- 《少年的你》短评情感分析——机器学习之逻辑回归
- 2019年招聘过程的种种酸甜苦辣历程
- 情报领域因果推理智能项目概览:以DAPAR为例
- logging模块(* * * * *)
- String s=hello;s+=world;s变化了吗?原始的String对象的内容变了吗?
- Python爬虫入门四之Urllib库的高级用法
- WCF技术实现基于角色的访问控制
- 表单校验---struts2
- C++ 数据指针(-)
- Lucene提供的条件判断查询[转]