正则表达式
正则表达式
-
正则表达式定义了字符串的模式。
-
正则表达式可以用来搜索、编辑或处理文本。
-
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
规则
Java 的正则表达式在匹配点(.) 和斜杠(),表达式要分别写作 \. 和 \\,
记住,匹配点(.) 或 {、[、(、?、$、^ 和 * 这些特殊符号要要前加双斜杠,注意逗号(,) 不是这一类特殊字符,因为它只会出现在中括号或花括号中
匹配 \ 时要用四斜杠 ,即特殊符号前的 \ 也需要转义
这是因为正则表达式串就是 Java 字符串的输出,输出时会自动转义
只要记住一点,你要想的正则表达式字符串是什么,而正则表达式字符串就是 Java 字符串的的输出结果,就知道应该怎么写了。
Pattern和Matcher
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher
- Pattern:一个Pattern是一个正则表达式经编译后的表现模式。
- Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
捕获组
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
// 按指定模式在字符串查找
// 捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
// 需要匹配的字符串
String line = "This order was placed for QT3000! OK?";
// 匹配规则
String pattern = "(\\D*)(\\d+)(.*)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m2 = r.matcher(line);
//find()捕获str字符串中匹配pattern的字段,并返回捕获后下一个字符的索引,所以可以遍历整个字符串
if (m2.find( )) {
//group(0)是代表整个表达式
System.out.println("Found value: " + m2.group(0) );
System.out.println("Found value: " + m2.group(1) );
System.out.println("Found value: " + m2.group(2) );
System.out.println("Found value: " + m2.group(3) );
} else {
System.out.println("NO MATCH");
}