Java中的正则表达式函数:匹配、提取、替换等常用方法
发布时间:2023-06-17 18:05:34
正则表达式(Regular Expression)是一种用于匹配和操作字符串的语言,可以在Java中使用正则表达式来进行字符串的匹配、提取、替换等操作。Java中提供了Pattern和Matcher这两个类来支持正则表达式的使用,下面介绍一些常用的方法。
1. 匹配方法
使用正则表达式来匹配一个字符串是否符合某种模式。例如,匹配一个字符串是否是一个合法的email地址。
String pattern = "^[a-zA-Z0-9]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; String email = "test123@test.com"; boolean isMatch = Pattern.matches(pattern, email); System.out.println(isMatch); // true
2. 提取方法
使用正则表达式来提取字符串中符合某种模式的部分。例如,从一个字符串中提取出手机号码。
String pattern = "(^|\\D)(1[3456789]\\d{9})($|\\D)";
String str = "my phone number is 13812345678, please call me.";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(2)); // 13812345678
}
3. 替换方法
使用正则表达式来替换字符串中符合某种模式的部分。例如,将字符串中的所有空格替换成下划线。
String pattern = "\\s+"; String str = "This is a test string"; String newStr = str.replaceAll(pattern, "_"); System.out.println(newStr); // This_is_a_test_string
4. 分割方法
使用正则表达式来对字符串进行分割。例如,以逗号或空格作为分隔符将一个字符串分割成多个部分。
String pattern = "[,\\s]+";
String str = "This, is a test, string";
String[] arr = str.split(pattern);
for (String s : arr) {
System.out.println(s);
}
// This
// is
// a
// test
// string
5. 匹配结果的操作方法
匹配时,可以使用Matcher对象来获取匹配结果,进一步进行操作。
String pattern = "(\\d{4})年(\\d{2})月(\\d{2})日";
String str = "今天是2021年09月10日,明天是2021年09月11日。";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println("年份:" + m.group(1));
System.out.println("月份:" + m.group(2));
System.out.println("日期:" + m.group(3));
}
// 年份:2021
// 月份:09
// 日期:10
// 年份:2021
// 月份:09
// 日期:11
在这个例子中,使用正则表达式来匹配字符串中的日期信息,然后通过Matcher对象获取匹配结果中的年份、月份、日期等信息。
总结:
正则表达式在Java中的应用十分广泛,可以用于字符串的匹配、提取、替换和分割等操作。在使用正则表达式时,需要先定义匹配模式,然后通过Pattern和Matcher两个类来实现字符串的操作,同时还可以对匹配结果进行操作,获取符合条件的部分。
