在日常开发工作中,无论你使用的语言是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正则表达式入坑指南相关推荐

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

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

  2. python web-python web入坑指南

    原标题:python web入坑指南 Invest regularly in your knowledge portfolio. Make learning a habit. 自学python web ...

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

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

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

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

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

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

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

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

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

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

  8. 发布开源框架到CocoaPods入坑指南

    个人原文博客地址: 发布开源框架到CocoaPods入坑指南 在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了 可 ...

  9. 旧android 4 平板,如今的安卓平板值不值得买:小米平板4入坑指南

    如今的安卓平板值不值得买:小米平板4入坑指南 2018-08-04 07:30:40 29点赞 25收藏 42评论 购买理由 三年前入坑小米平板2,在当年的安卓平板环境里,小米平板还是一款十分值得购买 ...

  10. api 微信内置浏览器js_多端开发框架uni-app入坑指南,一套代码适用微信、头条等小程序...

    前言 hello 小伙伴们,现在我已经正式入坑 uni-app 了.uni-app 已经发布好几个月了,期间也是踩坑无数,但是官方秉承着不抛弃不放弃的精神,积极解决开发者的各种简单的.复杂的问题,在此 ...

最新文章

  1. html里的swal添加倒计时,使用甜蜜警报插件的setInterval函数倒计时
  2. select三级联动 怎么删除前一个的_python测试开发django57.xadmin选项二级联动
  3. 「特征工程」之零基础入门数据挖掘
  4. NetDevOps — 华为设备命令汇总
  5. 检查用户是否有权限从ABAP里调用C kernel functions
  6. 在每个运行中运行多个查询_在Kubernetes中运行OpenEBS
  7. WordCount处理过程
  8. Xception总结
  9. 吴恩达 深度学习 编程作业(2-1.1) Initialization
  10. 这个阿里篮球打得最好的男人 拟收购NBA篮网余下51%股权
  11. EurekaServer高可用的注册中心集群搭建
  12. 每个人都应有自己的作品
  13. 计算机用户无法删除文件,教你几招解决电脑上的文件夹删不掉怎么办?
  14. 微信企业号开发:企业支付成功后关闭交易页面问题
  15. OpenCV 文字绘制----cv::putText详解
  16. 2021年中国海图记录器市场趋势报告、技术动态创新及2027年市场预测
  17. 手机号码批量导入通讯录php,怎么用 Excel 批量录入电话号码并导入到 Android 手机...
  18. 海康sdk项目部署Linux系统时出现java.lang.UnstisfiedLinkError:jnidispatch(xxx)not found in resource path错误
  19. 两种降压型DC-DC变换器的工作原理
  20. 谈谈数字化转型的几个关键问题

热门文章

  1. Yann LeCun 会成为下一个居里夫人吗?
  2. 该如何缓解网卡的普遍问题?
  3. 那些不开源的公司,后来怎么样了?
  4. 开发运维已死,无运维万岁
  5. 腾讯云刘颖:与微信共建小程序开发者生态,让小程序开发更简单
  6. GitHub 断供危机来了!权威解读程序员应对指南 | CSDN 独家
  7. 互联网公司的架构设计要怎么落地?| 技术头条
  8. Google 誓要干掉 URL!
  9. 今日头条们:一边道歉一边做大
  10. 华为否认窃密;贾跃亭陪许家印考察FF;谷歌或被罚95亿欧元 | 极客头条