正则表达式
一、Java正则表达式
正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别, Java 正则表达式和 Perl 的是最为相似的。
java.util.regex 包主要包括以下三个类:
-
Pattern 类:
-
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法 。
-
Matcher 类:
-
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。
-
PatternSyntaxException:
-
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
public static void main(String args[]){
String content = "aaaaaaaaaaabbbaaaaaaaaaaccc";
String pattern = ".*bbb.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了 'bbb' 子字符串? " + isMatch);
}
二、捕获组
捕获组是把多个字符当一个单独单元进行处理的方法
-
它通过对括号内的字符分组来创建。 例如,正则表达式 (dog) 创建了单一分组,组里包含"d","o",和"g"。
-
可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值
-
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。
//例子一
public static void main( String args[] ) {
// 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK 8877?";
String pattern = "(\\D*)(\\d+)(.*)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println("Found value: " + m.group(0)); //Found value: This order was placed for QT3000! OK 8877?
System.out.println("Found value: " + m.group(1)); //Found value: This order was placed for QT
System.out.println("Found value: " + m.group(2)); //3000
System.out.println("Found value: " + m.group(3)); //! OK 8877?
} else {
System.out.println("NO MATCH");
}
}
//例子二
public static void main(String[] args){
String str="n13977777777s18911111111,你好15988888888hha0955-7777777 sss0775-6678111";
Pattern pattern = Pattern.compile("1[3|4|5|7|8][0-9]\\d{4,8}");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println("查询到一个符合的手机号码:"+matcher.group()); //查找到符合的即输出
//str = matcher.replaceAll("");
//System.out.println(str);
}
}
三、正则表达式语法
四、Matcher 类的方法
-
索引方法
-
索引方法提供了有用的索引值,精确表明输入字符串中在哪能找到匹配:
-
查找方法
-
查找方法用来检查输入字符串并返回一个布尔值,表示是否找到该模式
-
替换方法
-
替换方法是替换输入字符串里文本的方法
五、PatternSyntaxException类的方法
-
PatternSyntaxException 是一个非强制异常类,它指示一个正则表达式模式中的语法错误。
-
PatternSyntaxException 类提供了下面的方法来帮助我们查看发生了什么错误。
浙公网安备 33010602011771号