Java正则表达式初探(一)

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

一、什么是正则表达式?

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

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

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

clip_image002

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

1.字符

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

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

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

2.字符类

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

clip_image004

3.预定义字符类

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

clip_image006

4.边界匹配

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

clip_image008

5.量词

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

clip_image010

6.捕获组和非捕获组

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

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

clip_image012

三、写在最后

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

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

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

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

原文地址:https://www.cnblogs.com/yescoolfan/p/3474389.html