网站首页 > 技术文章 正文
在日常开发工作中,无论你使用的语言是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}#34;, "123"));
? 密码必须由字母和数字组成,且长度要在6-12位之间
System.out.println(Pattern.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}#34;, "123hello456"));
? 一年的12个月(01~09和1~12) : ^(0?[1-9]|1[0-2])$
Pattern.matches("^((0?[1-9])|(1[0-2]))#34;, "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技术干货,请关注课工场,和我们一起关注前沿技术,快速提升。
猜你喜欢
- 2024-11-02 武汉课工场大数据培训:Java正则表达式入坑指南
- 2024-11-02 Go语言进阶之路:并发爬虫,爬取空姐网所有相册图片
- 2024-11-02 golang常用库:gorilla/mux-http路由库使用
- 2024-11-02 golang 使用pprof和go-torch做性能分析
- 2024-11-02 Golang Gin 入门 (一)(golang官方教程)
- 2024-11-02 日志文件转运工具Filebeat笔记(日志转载)
- 2024-11-02 Linux 命令行下搜索工具大盘点,效率提高不止一倍
- 2024-11-02 SlimTrie:战胜Btree单机百亿文件的极致索引-实现篇
- 2024-11-02 Go的安全编程和防御性编程(输入验证和过滤)
- 2024-11-02 清华学神尹成带你学习golang2021(56)(Go语言测试命令)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)