深入java 使用正则表达式

这篇文章总结java1.4之后加入的正则表达式,总结他的使用。更多的源代码请访问我的github:https://github.com/yangsheng20080808/deepIntoJava

本文分为2大部分

  • 正则表达式的包
  • 正则表达式的用法

正则表达式的包

正则表达式所在的包:java.util.regex
这个包里面包含了一个接口和两个类:
分别是(接口: MatchResult)(类:Matcher ,Pattern
这么一看,其实在正则表达式的使用上,并没有太多东西嘛?(我们这里先不考虑如何定义正则表达式,仅仅是从这几个类的使用出发。

最基础的还是先读读文档:

public interface MatchResult :
匹配操作的结果。 此接口包含用于确定与正则表达式匹配结果的查询方法。通过 MatchResult 可以查看匹配边界、组和组边界,但是不能修改。(这个接口具体是靠)java.util.regex.Matcher实现的,我们具体关心Matcher,这个接口理解即可。

方法:
深入java 使用正则表达式_第1张图片

java.util.regex.Matcher implement MatchResult
通过解释 Pattern 对 character sequence 执行匹配操作的引擎。

通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:

matches 方法尝试将整个输入序列与该模式匹配。

lookingAt 尝试将输入序列从头开始与该模式匹配。

find 方法扫描输入序列以查找与该模式匹配的下一个子序列。

每个方法都返回一个表示成功或失败的布尔值。通过查询匹配器的状态可以获取关于成功匹配的更多信息。

java.util.regex.Pattern 这个类负责正则表达式的定义
正则表达式的编译表示形式。

指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

准备完毕,开始操作。

正则表达式的用法

举个例子先看看MatchResult ,下面的代码我们只关心Matcher部分。正则表达式其实真的挺强的。

我们先通过一个例子学习Matcher:find(),end(),start(),groupCount(),group(),group(i)这6个函数,函数的具体意思,大家对比代码中的注释看一下就好。
深入java 使用正则表达式_第2张图片

我们先通过一个例子学习Matcher:hitEnd(),reset(),usePattern(),toMatchResult() , replaceAll(),replaceFirst()这6个函数,函数的具体意思,大家对比代码中的注释看一下就好。
深入java 使用正则表达式_第3张图片
运行结果:
深入java 使用正则表达式_第4张图片

boolean matches()尝试将整个区域与模式匹配,当且仅当整个区域序列匹配此匹配器的模式时才返回 true。boolean lookingAt()总是从第一个字符进行匹配,匹配成功了不再继续匹配,当且仅当输入序列的前缀匹配此匹配器的模式时才返回 true.

正则表达式的分组概念(操作分组)

上例子中其实很明确了,我们的正则表达式是有分组的概念的,分组是由小括号()决定的,通常通过会将模式的各部分放在圆括号中来创建分组。分组从左向右编号,从 1 开始编号(分组 0 表示完整的匹配结果),我们通过$num(其中num = 0表示完整分组,num = 1表示第二个分组,以此类推:),我们直接举例子说明:
深入java 使用正则表达式_第5张图片

说到这里其实我们如何去定义一个正则表达式(极其强大)呢,还没有说,这个正则表达式的解析主要是Pattern类来负责的,我们下一篇文章(正则表达式的定义)详细说他。

感谢:https://www.ibm.com/developerworks/cn/java/j-perry-regular-expressions/index.html

你可能感兴趣的:(java深入理解)