正则表达式可以描述一种字符串特征的模式,并根据该特征来对于有相同特征的字符串进行匹配。

在正则表达式中,特定的字符可以匹配确定的字符或字符串。正则表达式中字符的匹配行为如下表所示

元字符

行为

示例

*

零次或多次匹配前面的字符或子表达式。

等效于 {0,}。

zo* 与“z”和“zoo”匹配。

+

一次或多次匹配前面的字符或子表达式。

等效于 {1,}。

zo+ 与“zo”和“zoo”匹配,但与“z”不匹配。

?

零次或一次匹配前面的字符或子表达式。

等效于 {0,1}。

当 ?紧随任何其他限定符(*、+、?、{n}、{n,} 或 {n,m})之后时,匹配模式是非贪婪的。非贪婪模式匹配搜索到的、尽可能少的字符串,而默认的贪婪模式匹配搜索到的、尽可能多的字符串。

zo? 与“z”和“zo”匹配,但与“zoo”不匹配。

o+? 只与“oooo”中的单个“o”匹配,而 o+ 与所有“o”匹配。

do(es)? 与“do”或“does”中的“do”匹配。

^

匹配搜索字符串开始的位置。如果标志中包括 m(多行搜索)字符,^ 还将匹配 \n 或 \r 后面的位置。

如果将 ^ 用作括号表达式中的第一个字符,则会对字符集求反。

^\d{3} 与搜索字符串开始处的 3 个数字匹配。

[^abc] 与除 a、b 和 c 以外的任何字符匹配。

$

匹配搜索字符串结尾的位置。如果标志中包括 m(多行搜索)字符,^ 还将匹配 \n 或 \r 前面的位置。

\d{3}$ 与搜索字符串结尾处的 3 个数字匹配。

.

匹配除换行符 \n 之外的任何单个字符。若要匹配包括 \n 在内的任意字符,请使用诸如 [\s\S] 之类的模式。

a.c 与“abc”、“a1c”和“a-c”匹配。

[]

标记括号表达式的开始和结尾。

[1-4] 与“1”、“2”、“3”或“4”匹配。[^aAeEiIoOuU] 与任何非元音字符匹配。

{}

标记限定符表达式的开始和结尾。

a{2,3} 与“aa”和“aaa”匹配。

()

标记子表达式的开始和结尾。可以保存子表达式以备将来之用。

A(\d) 与“A0”至“A9”匹配。保存该数字以备将来之用。

|

指示在两个或多个项之间进行选择。

z|food 与“z”或“food”匹配。(z|f)ood 与“zood”或“food”匹配。

/

表示 JScript 中的文本正则表达式模式的开始或结尾。在第二个“/”后添加单字符标志可以指定搜索行为。

/abc/gi 是与“abc”匹配的 JScript 文本正则表达式。g(全局)标志指定查找模式的所有匹配项,i(忽略大小写)标志使搜索不区分大小写。

\

将下一字符标记为特殊字符、文本、反向引用或八进制转义符。

\n 与换行符匹配。\( 与“(”匹配。\\ 与“\”匹配。

Java中通过java.util.regex包来实现正则表达式。在包中主要包括以下三个类:

    • Pattern 类:

      pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

    • Matcher 类:

      Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

    • PatternSyntaxException:

      PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误

在正则表达式的使用中,首先确定好正则表达式字符串,通过Pattern类来初始化。然后通过Matcher类的方法根据正则字符串来对原始字符串进行索引、查找、替换等操作。

posted on 2020-10-30 20:00  饭吃了  阅读(85)  评论(0编辑  收藏  举报