java正则表达式

来源:互联网 发布:超盟数据李健豪 编辑:程序博客网 时间:2024/05/16 05:08

正则表达式是功能强大,使用灵活的文本处理工具,它使用某字符串 集合中各串的公共特征来描述这个字符串,这种特征可以称为模式。利用模式处理文本比利用字符串更有效。java.util.regex包主要有Pattern、Matcher、PatternSyntaxException三个类支持正则表达式。

(一)正则表达类的基础

如果想表示一个数可能是负值,可以用负号加问号放在数字前,如—?8;如果表示一位数字,可以用反斜线和d表示如\\d;如果表示一位数以上,正则表达式写为\\d+;如果表示一个数字前可能有正号或负号,应该写为-|\\+,其中+是逻辑或。

例如:


(二)正则表达式字符类

下表列出构造正则表达式的字符类,表中方括号内的构造可以匹配一定范围的字符串。

字符类含义


[abc]
[`abc]
[a-zA-Z]
[a-d[m-p]]
[a-z&&[def]]
[a-z&&[`bc]]
[a-z&&[`m-p]]


a、b、或c(简单类)
除了abc外的任何字符(非)
a~z或A~Z(含)
a~d或m~p与[a-dm-p]等价(并)
d、e或f(交)
a~z除了b和c,等价[ad-z](差)
a~z,且非m~p,等价[a-lq-z](差)

实例:


(三)预定义字符集

表示某种缩写,见下表:

预定义字符含义.
\d
\D
\s
\S
\w
\W任何字符(不一定匹配行终止符)
一位数字:[0-9]
一位非数字:[`0-9]
一个空白字符:[\t\n\x0B\f\r]
一个非空白字符:[`\s]
一个词字符:[a-zA-Z_0-9]
一个非词字符:[`\w]
(四)量词

量词用来说明读入文本的方式,有贪心的(Greedy),不情愿的(Reluctant),占有的(Possessive)三种。贪心是指匹配器先读入整个输入串进行匹配,不行再减少一个字符重新匹配。不情愿是指匹配器一次只读入一个字符进行匹配,最后才会读入整个字符串;占有的是指匹配器读入整个输入串进行一次匹配,不减少字符。

GreedyReluctantPossessive含义X?
X*
X+
X{n}
X{n,}
X{n,m}X??
X*?
X+?
X{n}?
X{n,}?
X{n,m}X?+
X*+
X++
X{n}+
X{n,}+
X{n,m}+X,一次或没有
X,零次或多次
X,一次或 多次
X,正好n次
X,至少n次
X,至少n次但不超过m次

(五)边界匹配字符

边界匹配字符可以指明匹配在哪里进行,如下表

边界匹配符 含义`
$
\b
\B
\A
\G
\Z
\z行的开头
一行的尾部
一个词的边界
一个非词的边界
输入的开头
前次匹配的尾部
输入的尾部,但是用于最后终止符(如果有)
输入的尾部

(六)Pattern类

Pattern类提供了一个compile()方法,可以接受一组标志影响模式匹配的方式。例如Pattern.CASE_INSENSITIVE,允许部分大小写字母匹配。

Pattern提供了matches()方法,允许快速检查给输入字符串中有无指定模式,它是静态方法,要有Pattern类名来调用。

Pattern提供了spilt()方法,把按正则表达式分界的字符串分解为一个字符串组。

(七)Matcher类

 提供了解释模式和执行匹配操作的方法

(八)PatternSyntaxException类

该类用于检查正则表达式模式中的语法错误。






a、b、或c(简单类)
除了abc外的任何字符(非)

a~z或A~Z(含)
a~d或m~p与[a-dm-p]等价(并)
0 0
原创粉丝点击