Java使用正则表达式匹配字符串


发布日期 : 2021-05-23 08:06:00 UTC

访问量: 10 次浏览

在Java中,正则表达式是一种强大的工具,用于搜索、匹配和替换字符串。
使用正则表达式,可以实现很多功能,例如验证邮箱地址、提取文本中的数字、去除HTML标记等。

正则表达式语法

正则表达式是一种描述字符模式的语言。它使用特殊字符和固定字符组成的模式来匹配文本字符串。
以下是一些常用的正则表达式语法:

特殊字符描述
.匹配任意一个字符
^匹配字符串的开头
$匹配字符串的结尾
*匹配前一个字符的零次或多次
+匹配前一个字符的一次或多次
?匹配前一个字符的零次或一次
[]匹配方括号中的任意一个字符
[^]匹配不在方括号中的任何字符

Java中的正则表达式类

Java中提供了一个 java.util.regex 包,用于支持正则表达式的使用。该包中包含 PatternMatcher 两个类:

  • Pattern:用于编译正则表达式,生成一个匹配模式。Pattern.compile 方法用于编译正则表达式。
  • Matcher:用于匹配正则表达式。Matcher.matches方法用于匹配文本字符串。

示例代码

下面是一个示例代码,用于验证一个邮箱地址是否合法:

import java.util.regex.*;

public class EmailValidator {
private static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

private static final Pattern pattern = Pattern.compile(EMAIL_PATTERN);

public static boolean validate(final String email) {
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
}

在这个示例代码中,EMAIL\_PATTERN 是一个用于匹配邮箱地址的正则表达式。
该表达式可以匹配符合RFC 2822标准的邮箱地址。在 Pattern.compile 方法中,将 EMAIL\_PATTERN 编译为一个匹配模式。
在validate方法中,将email参数与 EMAIL\_PATTERN 进行匹配,如果匹配成功,则返回true,否则返回false。

下面是针对一段文本,提取其中所有数字的示例代码:

import java.util.regex.*;

public class NumberExtractor {
public static void main(String[] args) {
String text = "Java is a programming language and 123 is a number.";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}

在这个示例代码中, \d+ 是一个匹配至少一个数字的正则表达式。在Pattern.compile方法中,将该表达式编译为一个匹配模式。在Matcher.find方法中,循环查找匹配的数字,并使用match.group返回匹配结果。

Java中的正则表达式扩展

除了上面提到的语法,Java还支持一些扩展语法,例如:

扩展描述
?<=正向匹配断言(前缀)
?<!反向匹配断言(前缀)
?=正向匹配断言(后缀)
?!反向匹配断言(后缀)
(?:)不捕获匹配结果

下面是一个示例代码,用于将文本中的HTML标记去除,并只留下纯文本:

import java.util.regex.*;

public class HtmlTagRemover {
public static void main(String[] args) {
String html = "<h1>Java is a programming language</h1>";
String text = html.replaceAll("\\<.*?\\>", "");
System.out.println(text);
}
}

在这个示例代码中, “\<.*?>” 是一个匹配HTML标记的正则表达式。在String.replaceAll方法中,使用空字符串替换所有匹配的HTML标记,从而得到纯文本字符串。

结论

在Java中,正则表达式是一种强大的工具,用于搜索、匹配和替换字符串。通过使用java.util.regex包中的Pattern和Matcher类,可以编译和匹配正则表达式。此外,Java还支持一些扩展语法,例如反向/正向匹配断言、不捕获匹配结果等。熟练掌握正则表达式,将极大地提高Java开发的效率。