Java正则表达式函数集锦
Java正则表达式是Java中一种非常强大的匹配文本的工具。它可以通过一些特定的语法规则来匹配指定的文本,如果匹配成功,就可以对该文本进行处理。本文将为大家介绍Java中常用的正则表达式函数及其用法。
1. String类的matches方法
matches方法是String类中最常用的正则表达式函数之一。它的作用是判断字符串是否符合给定的正则表达式。
示例:
String input = "abc123";
boolean isMatched = input.matches("^\\w+$");
System.out.println(isMatched); // expected output: true
在上面的示例中,input是要被判断的字符串。"^\\w+$"是正则表达式,表示由多个字母、数字、下划线组成的字符串。调用input.matches()方法会返回一个布尔值,表示是否匹配成功。在这个例子中,isMatched的值为true,因为input符合正则表达式的要求。
2. Matcher类中的find方法
find方法可以在一个字符串中查找与正则表达式匹配的子字符串。
示例:
String input = "abc123def456";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group());
}
在上面的示例中,我们首先定义了一个字符串input,它包含了两个数字串。然后我们编译一个正则表达式"\\d+",表示由一个或多个数字组成的字符串。接着我们将这个正则表达式与input进行匹配,并使用while循环不断寻找匹配的子字符串。最后,我们把每个找到的子字符串输出到控制台上。
3. Matcher类中的group方法
group方法可以获取匹配到的子字符串。
示例:
String input = "My email is jack@example.com.";
Pattern pattern = Pattern.compile("\\w+@[A-Za-z0-9]+\\.[A-Za-z]+");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Email address: " + matcher.group());
}
在上面的示例中,我们首先定义了一个字符串input,它包含了一个邮箱地址。然后我们编译一个正则表达式"\\w+@[A-Za-z0-9]+\\.[A-Za-z]+",表示一个邮箱地址。接着我们将这个正则表达式与input进行匹配,并使用if条件判断匹配是否成功。如果匹配成功,我们就使用matcher.group()方法获取匹配到的邮箱地址,然后输出到控制台上。
4. String类中的replaceAll方法
replaceAll方法可以替换字符串中符合条件的子字符串。
示例:
String input = "Today is 2019-01-01.";
String output = input.replaceAll("\\d{4}-\\d{2}-\\d{2}", "tomorrow");
System.out.println(output); // expected output: "Today is tomorrow."
在上面的示例中,我们首先定义了一个字符串input,它包含了一个日期格式的字符串。然后我们使用String类中的replaceAll方法,将符合格式的日期字符串替换成"tomorrow"。最后,我们输出替换后的结果到控制台上。
5. Matcher类中的replaceAll方法
replaceAll方法也可以替换字符串中符合条件的子字符串。与String类中的replaceAll方法不同的是,Matcher类中的replaceAll方法需要用到正则表达式进行匹配和替换。
示例:
String input = "2019-01-01";
Pattern pattern = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})");
Matcher matcher = pattern.matcher(input);
String output = matcher.replaceAll("$2/$3/$1");
System.out.println(output); // expected output: "01/01/2019"
在上面的示例中,我们首先定义了一个日期格式的字符串input。然后我们编译了一个正则表达式"(\\d{4})-(\\d{2})-(\\d{2})",它表示由一个四位数字的年份、两位数字的月份和两位数字的日期构成的字符串。接着我们将这个正则表达式与input进行匹配,并使用matcher.replaceAll()方法将匹配到的日期格式字符串替换成"月份/日期/年份"的形式。最后,我们输出替换后的结果到控制台上。
6. Pattern类的split方法
split方法可以将符合条件的子字符串作为分隔符来划分字符串,返回值是一个String数组。
示例:
String input = "Java,Python,C++,JavaScript";
Pattern pattern = Pattern.compile(",");
String[] output = pattern.split(input);
for (String str : output) {
System.out.println(str);
}
在上面的示例中,我们首先定义了一个字符串input,它包含了四个编程语言名称。然后我们编译了一个正则表达式",",表示逗号。接着我们调用了pattern.split()方法,将input字符串按逗号进行划分,并返回一个String数组。最后,我们使用for循环遍历数组,将划分后的字符串输出到控制台上。
7. Matcher类中的start和end方法
start和end方法可以获取匹配到的子字符串在原字符串中的起始位置和结束位置。
示例:
String input = "abc123def456";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
System.out.println("Start position: " + start);
System.out.println("End position: " + end);
}
在上面的示例中,我们首先定义了一个字符串input,它包含了两个数字串。然后我们编译一个正则表达式"\\d+",表示由一个或多个数字组成的字符串。接着我们将这个正则表达式与input进行匹配,并使用while循环不断寻找匹配的子字符串。在每一次匹配成功后,我们使用matcher.start()方法和matcher.end()方法获取匹配到的子字符串在原字符串中的起始位置和结束位置,然后输出到控制台上。
总结
Java正则表达式是Java中非常重要的一种工具。本文主要介绍了Java中常用的正则表达式函数,包括String类的matches方法、Matcher类的find方法、group方法、replaceAll方法、Pattern类的split方法,以及Matcher类中的start和end方法。在实际开发中,合理运用这些函数可以大大提高编程效率和编程质量。
