在日常开发工作中,无论你使用的语言是java、python、shell、golang还是C#。正则表达式是编程语言中几乎绕不开的话题。有了它,可以帮你快速定位到符合条件的文本内容。今天小编带大家一起来学习下正则表达式,相信通过这篇文章的介绍,能为以后的工作提供一个更清晰的思路。

首先给大家介绍一下正则表达式使用的类,在java.util.regex 包中主要包括以下三个类:

1.Pattern 类

pattern 对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个 Pattern对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

2.Matcher 类

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

3.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

通过以上两个实例,我们可以清晰的看出正则表达式在数据的验证提取目标格式字符串的强大功能。

小福利

下面是小编为大家整理的一些在工作中常用的正则表达式,希望能帮助到大家。

  • 匹配中文字符:
  • 匹配Email地址:
  • m-n 位的数字:
  • 密码必须由字母和数字组成,且长度要在6-12位之间:
  • 一年的12个月(01~09和1~12) : ^(0?[1-9]|1[0-2])$
  • 匹配时分秒:
  • IP地址格式:
  • 网址匹配包含http、https、ftp协议:

今天这篇文章,通过两个实例为大家详细介绍了正则表达式在编程过程中的强大功能:

  1. 校验数据格式是否正确
  2. 提取目标格式的字符串内容

结合小编整理的一些作用广泛的表达式,相信大家对于我们今天的主题正则表达式有了一个更为清晰的认知。

java matcher方法_Java正则表达式入坑指南:正则表达式使用的类有哪些吗?相关推荐

  1. java正则匹配的坑_java正则表达式入坑指南

    在日常开发工作中,无论你使用的语言是java.python.shell.golang还是C#, 正则表达式是编程语言中几乎绕不开的话题.有了它,可以帮你快速定位到符合条件的文本内容.今天小编带大家一起 ...

  2. java正则表达式 %_java正则表达式入坑指南

    在日常开发工作中,无论你使用的语言是java.python.shell.golang还是C#, 正则表达式是编程语言中几乎绕不开的话题.有了它,可以帮你快速定位到符合条件的文本内容.今天小编带大家一起 ...

  3. java matcher方法_java.time.Matcher.hitEnd()方法

    如果在此匹配器执行的最后一个匹配操作中搜索引擎命中了输入的结尾,则java.time.Matcher.hitEnd()方法返回true. 声明 以下是java.time.Matcher.hitEnd( ...

  4. uniapp调用c语言方法,uni-app 入坑指南-web开发

    编辑推荐: 本文重点介绍了 uni-app 入坑指南,方便大家更好的了解 uni-app 本篇只讲述 uni-app,不与其他类似框架进行对比 本文来自于博客园,由火龙果软件Alice编辑推荐. 什么 ...

  5. python这个软件学会能做什么工作-学会Python真的有高收入?盯,请查收这份入坑指南...

    学会Python真的有高收入?盯,请查收这份入坑指南 2018-10-10 20:51:00 567点赞 6312收藏 186评论 小编注:想获得更多专属福利吗?金币加成.尊享众测.专属勋章.达人福利 ...

  6. 丅rust是什么意思_Rust入坑指南:亡羊补牢

    如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...

  7. Camunda BPM工作流引擎入坑指南(一)

    Camunda BPM工作流引擎入坑指南 欢迎使用Camunda BPM工作流 入坑说明书 入坑准备工作 BPMN2.0基础 Camunda实战 Camunda BPM Activiti对比 功能快捷 ...

  8. Rust入坑指南:朝生暮死

    今天想和大家一起把我们之前挖的坑再刨深一些.在Java中,一个对象能存活多久全靠JVM来决定,程序员并不需要去关心对象的生命周期,但是在Rust中就大不相同,一个对象从生到死我们都需要掌握的很清楚. ...

  9. Rust入坑指南:亡羊补牢

    如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...

  10. Rust入坑指南:核心概念

    如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...

最新文章

  1. i5 10400f相当于几代i7_十代酷睿i9/i7/i5差异惊人!功耗/温度放飞自我
  2. 在互联网圈混,怎么能不知道这9个Java方向公众号
  3. GAN在信息检索领域的应用
  4. mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※
  5. atitit.jQuery Validate验证框架详解与ati Validate 设计新特性
  6. hive sql练习_经典的SparkSQL/Hive-SQL/MySQL面试-练习题
  7. 分布式选举协议:Raft
  8. 华为:对学生定制机毫不知情 将会对虚假宣传追责
  9. 【Nacos】Nacos MySQL 配置 启动报错 ould not create connection to database server. Attempted reconnect 3 time
  10. 股票价格跨度--单调栈
  11. C语言int的字节数跟什么有关,C语言中int型字长和什么有关
  12. 数字校园APP——可行性报告分析
  13. Linux统计进程网络,查看磁盘io、内存free、系统进程ps、网络状态netstat、Linux抓包tcpdump...
  14. [转载] Numpy数组对象ndarray
  15. python移动文件,将某一文件夹下的文件移至另一个文件夹下
  16. ps图层高级扩展知识
  17. kotlin 开发桌面应用_2020-21年Kotlin应用开发十大公司
  18. 《阿里云服务器教程3》:手机移动端如何远程登录阿里云服务器ECS
  19. IE浏览器日期转换问题
  20. 51虚拟安卓系统v1.1.0.6-安卓端的虚拟机(支持root,xposed框架)

热门文章

  1. Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法!
  2. system_Class类说明文档
  3. Objective-C浅拷贝和深拷贝
  4. Android是如何绘制View的
  5. NailTech 公司网站制作思路
  6. JAVA和JVM运行原理揭秘
  7. 微软小冰你这么智能 .net知道吗?
  8. 第三天 二列和三列布局
  9. 使用lkjson处理Json数据
  10. 【Hoxton.SR1版本】Spring Cloud OpenFeign远程服务调用