Java正则表达式初探(一)
好多同学们总是听别人说起正则表达式这个东西,也有很多用接触到实际使用过。但是相信有很大一部分人是在用的时候采取网站上搜索,拿一个一知半解的别人写的例子过来,简单测试下功能可用,就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
水平有限,欢迎指正,转载时请附上原文链接
最新文章
- ARCGIS Server 发布服务时出现的问题解决
- SQLServer 维护脚本分享(10)索引
- Hadoop.2.x_WebUV示例
- C++ Set &; MultiSet
- NTFS reparse point
- 三个流行MySQL分支的对比
- 使用PowerShell读、写、删除注册表键值
- ECSHOP用户评论
- 星际SC 地图 Big Game Fort 要塞之战 修正了 BIG GAME 地图的平衡性
- MVC验证06-自定义错误信息
- MongoDB的.Net驱动
- 利用XShell 上传和下载文件
- Python中装饰器的用法
- 欢迎访问我的独立博客 tracefact.net (2019.1.30)
- 跨站请求伪造 | ajax
- SignalR 实时推送消息
- CCNet: Criss-Cross Attention for Semantic Segmentation 里的Criss-Cross Attention计算方法
- 【转载】C#检测客户端输入的内容是否含有危险字符串
- MySQL 初识别语句,数据库、表、行的增删改查
- nodejs进程线程优化性能
热门文章
- Windows 批处理获取某路径下最新创建的文件的名称
- Android udp json+数组 --->;bytes发送数据
- echarts雷达图点击事件 包含(2.x,3.85,4.02)测试
- Java:字节流和字符流(输入流和输出流)
- CSS杂谈(2)
- java国际化---native2ascii.exe 的使用方法
- 一套简单的git版本控制代码
- Windows Server 2016-清理残留域控信息
- 【RHEL7.0】软件包管理
- maven与jdk版本对应关系