java正则表达式的筛选使用
前置概念
Java 正则表达式中主要使用regex包中的类。
java.util.regex 包主要包括以下三个类:
-
Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
-
Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
-
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
在其他语言中,【\\】 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,【\\】 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以,在其他的语言中(如Perl),一个反斜杠 【\】就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 【\\】 代表其他语言中的一个 【\】,这也就是为什么表示一位数字的正则表达式是【\\d】,而表示一个普通的反斜杠是【\\\】
个人理解:
- pattern:构建正则表达式的规则
- matcher:进行筛选,获得结果集
- group(捕获组):
- 通过从左至右的括号来获取捕获的结果集
- 示例:( (A) ( (B ) ( C )) )
- group(0) ==> ( ( A ) ( ( B ) ( C ) ) )
- group(1) ==> ( A )
- group(2) ==> (( B )( C ))
- group(3) ==> ( B )
- group(4) ==> ( C )
- group(捕获组):
正则表达式文档链接:
使用示例
import java.util.regex.*;
class RegexExample1{
public static void main(String args[]){
String content = "I am noob ";
Pattern pattern = Pattern.compile("#\\{([0-9a-zA-Z_]+)\\}");
Matcher matcher = pattern.matcher(cellValue);
if(matcher.find()) {
String key = matcher.group(1);
}
}
}