好多同学们总是听别人说起正则表达式这个东西,也有很多用接触到实际使用过。但是相信有很大一部分人是在用的时候采取网站上搜索,拿一个一知半解的别人写的例子过来,简单测试下功能可用,就OK了。正则表达式那晦涩难懂的语法让很多人望而却步。但是读了本文,我相信很多人对于正则表达式就算是基本入门了。最快捷的精通的办法,还是多练多写。

一、什么是正则表达式?

正则表达式,又称正则表达式、正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

二、java中正则表达式的实现

java中正则表达式相关的类都在java.util.regex包下面,我们先来看看都有哪些吧。

主要就是两个类,java的正则表达式相关的功能都已经在这两个类里面实现了。下面简单介绍下正在表达式中的语法吧。

1.字符

字符在正则表达式中,代表的就是一个字符本身。

Pattern p = Pattern.compile("abc");

上面这个正则表达式,代表就是匹配“abc”这个字符串,字符是正在表达式中对基本的元素,也非常好理解。

2.字符类

字符类在正则表达式中,代表的是一类字符。使用半角中括号代表字符类。中括号中可以出现一些带有含义的特殊字符。简单具体如下:

3.预定义字符类

正在表达式中,将人们最常用的字符类已经提前定义好,并且使用一个特殊的表达形式代替,让人们使用起来更加方便快捷。

4.边界匹配

边界匹配符,用于定义正则表达式匹配的边界约束。

5.量词

量词用于定义正则表达式中,字符出现的次数。量词的匹配模式分为三种:贪婪、勉强、独占

6.捕获组和非捕获组

捕获组的定义目的是为了将匹配到的内容当中定义几个部分,人们能够分别获取每一个部分的内容。捕获组的定义,与匹配无关,对于匹配结果也没有影响只是为了单纯的进行文本分组的。

非捕获组和捕获组恰恰相反,他是为了影响是否匹配,但是在匹配结果中又不出现的一种分组形式。

三、写在最后

在学习一个晦涩难度的技术的时候,最重要得还是要能够静的下心来,以及掌握一个正确的学习方法吧。

上面的内容在Java API中Pattern这个类的说明中有详细的解释。

没记住的同学,随时可以使用API查询。第二讲中将针对上述的概念,以具体的例子来说明用法。

作者:yescoolfan
出处:http://www.cnblogs.com/yescoolfan
水平有限,欢迎指正,转载时请附上原文链接

最新文章

  1. ARCGIS Server 发布服务时出现的问题解决
  2. SQLServer 维护脚本分享(10)索引
  3. Hadoop.2.x_WebUV示例
  4. C++ Set & MultiSet
  5. NTFS reparse point
  6. 三个流行MySQL分支的对比
  7. 使用PowerShell读、写、删除注册表键值
  8. ECSHOP用户评论
  9. 星际SC 地图 Big Game Fort 要塞之战 修正了 BIG GAME 地图的平衡性
  10. MVC验证06-自定义错误信息
  11. MongoDB的.Net驱动
  12. 利用XShell 上传和下载文件
  13. Python中装饰器的用法
  14. 欢迎访问我的独立博客 tracefact.net (2019.1.30)
  15. 跨站请求伪造 | ajax
  16. SignalR 实时推送消息
  17. CCNet: Criss-Cross Attention for Semantic Segmentation 里的Criss-Cross Attention计算方法
  18. 【转载】C#检测客户端输入的内容是否含有危险字符串
  19. MySQL 初识别语句,数据库、表、行的增删改查
  20. nodejs进程线程优化性能

热门文章

  1. Windows 批处理获取某路径下最新创建的文件的名称
  2. Android udp json+数组 --->bytes发送数据
  3. echarts雷达图点击事件 包含(2.x,3.85,4.02)测试
  4. Java:字节流和字符流(输入流和输出流)
  5. CSS杂谈(2)
  6. java国际化---native2ascii.exe 的使用方法
  7. 一套简单的git版本控制代码
  8. Windows Server 2016-清理残留域控信息
  9. 【RHEL7.0】软件包管理
  10. maven与jdk版本对应关系