您的位置:首页 > 编程语言 > Java开发

Java正则表达式

2016-03-10 16:16 260 查看
首先说一下java正则表达式的重点概念:

源码

import java.util.regex.Pattern;

public class PatternTest {

public static void main(String[] args) {

String pattern = "[+-]?[0-9]*";

Pattern pat = Pattern.compile(pattern);

Matcher mat = pat.matcher("+1");

boolean cb = mat.matches();

if (cb) {

System.out.println("istrue:" + cb);

} else {

System.out.println("isfalse:" + cb);

}

}

}

第一、相关类:Pattern、Matcher

第二、典型的调用顺序是

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher("aaaaab");

boolean b = m.matches();

在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。

语句 boolean b = Pattern.matches("a*b", "aaaaab");等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。

此类的实例是不可变的,可供多个并发线程安全使用。Matcher 类的实例用于此目的则不安全。

第三、正则表达式的构造摘要

字符类

[abc] a、b 或 c(简单类)

[^abc] 任何字符,除了 a、b 或 c(否定)

[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z&&[def]] d、e 或 f(交集)

[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)

[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

说明:

[]表示范围--某一个字符的范围

^表示非

&&表示

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)

\d 数字:[0-9]

\D 非数字: [^0-9]

\s 空白字符:[ \t\n\x0B\f\r]

\S 非空白字符:[^\s]

\w 单词字符:[a-zA-Z_0-9]

\W 非单词字符:[^\w]

说明:预定义字符类和字符类部分可以互换。如:[0-9] == \d

数量词

X? :X出现一次或一次也没有

X* :X出现零次或多次

X+ :X出现一次或多次

X{n} :X出现恰好 n 次

X{n,} :X出现至少 n 次

X{n,m} :X出现至少 n 次,但是不超过 m 次

例子:a?bc 表示在一个字符串中a出现0次或1次,abc或bc都可以匹配,aabc不可匹配

捕获组和非捕获组

组的表示方法:

捕获组

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:

1 ((A)(B(C)))

2 \A

3 (B(C))

4 (C)

组零始终代表整个表达式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: