Java 正则表达式详解

Java 正则表达式详解

Java 正则表达式是用于匹配字符串的一种语言,通过一些预定义的字符或模式来匹配字符串。正则表达式可以用于验证用户输入的数据、过滤文本中的特定字符等等。

正则表达式语法

Java 中使用正则表达式需要使用 java.util.regex 包中的类。常用的有 PatternMatcher 两个类。Pattern 类用于定义正则表达式,Matcher 类用于匹配文本。

以下是一些常用的正则表达式语法:

字符类

字符类用于匹配一个字符,通常使用方括号 [ ] 表示。例如,正则表达式 [abc] 表示匹配字符 abc

示例代码:

String regex = "[abc]";
String input = "abc123";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

a
b
c

字符集合

字符集合用于匹配一个字符集合,可以使用 - 来表示范围,例如,正则表达式 [a-z] 表示匹配任意小写字母。

示例代码:

String regex = "[a-z]";
String input = "abc123";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

a
b
c

非字符集合

非字符集合用于匹配除指定字符集合外的任意字符,可以使用 ^ 来表示。例如,正则表达式 [^a-z] 表示匹配任意非小写字母的字符。

示例代码:

String regex = "[^a-z]";
String input = "abc123";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

1
2
3

通配符

通配符用于匹配任意单个字符,通常使用 . 表示。例如,正则表达式 a.c 表示匹配一个以 a 开始,以 c 结束,中间任意一个字符的字符串。

示例代码:

String regex = "a.c";
String input = "abc ac adc";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

abc
adc

边界

边界用于指定一个字符串的边缘,通常使用 ^$ 来表示。例如,正则表达式 ^a.*c$ 表示匹配一个以 a 开始,以 c 结束的字符串。

示例代码:

String regex = "^a.*c$";
String input = "abc ac adc";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

abc

分组

分组用于对正则表达式的一部分进行分组,方便后续的引用。可以使用圆括号 () 进行分组。例如,正则表达式 (ab)+ 表示匹配一个或多个 ab 组成的字符串。

示例代码:

String regex = "(ab)+";
String input = "ab abab ababab";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

ab
abab
ababab

Java 正则表达式示例

验证手机号码

以下正则表达式可以验证中国大陆的手机号码:

String regex = "^(\\0086|\\+86)?1[3-9]\\d{9}$";
String input = "13812345678";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
System.out.println(matcher.matches());

输出结果:

true

过滤 HTML 标签

以下正则表达式可以过滤 HTML 标签:

String regex = "<[^>]+>";
String input = "<p>Hello, World!</p>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
System.out.println(matcher.replaceAll(""));

输出结果:

Hello, World!

提取邮件地址

以下正则表达式可以提取邮件地址:

String regex = "\\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\b";
String input = "john.doe@example.com, jane.doe@example.com";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

输出结果:

john.doe@example.com
jane.doe@example.com

结论

Java 正则表达式是一种强大的字符串匹配语言,可以用于验证用户输入、过滤文本、提取特定信息等等。掌握正则表达式的语法和常见用法,有助于提高 Java 开发的效率和精度。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程