Java正则匹配代码

引言

在编程中,我们经常需要对字符串进行匹配、替换和提取操作。Java提供了正则表达式的支持,能够方便地进行字符串的处理和操作。本文将介绍Java正则匹配的基本概念、常用语法和实例,帮助读者快速掌握Java中正则表达式的使用。

正则表达式的基本概念

正则表达式(Regular Expression)是一种用来描述字符串模式的表达式。它由字符和特殊字符组成,可以用来匹配、查找和替换字符串。在Java中,正则表达式由java.util.regex包提供支持。

在正则表达式中,常见的特殊字符有:

  • \d: 匹配数字字符。等价于[0-9]。
  • \w: 匹配字母、数字、下划线。等价于[A-Za-z0-9_]。
  • \s: 匹配空白字符,包括空格、制表符、换行符等。
  • . : 匹配除换行符以外的任意字符。
  • ^ : 匹配字符串的开头。
  • $ : 匹配字符串的结尾。
    • : 匹配前面的字符0次或多次。
    • : 匹配前面的字符1次或多次。
  • ? : 匹配前面的字符0次或1次。

Java中的正则表达式语法

Java中的正则表达式语法基本上和其他语言的正则表达式语法相似,但也有一些差异。下面是一些常用的正则表达式语法:

语法 描述
[] 匹配括号内的任意一个字符
[^] 匹配除了括号内的字符以外的字符
[a-z] 匹配a到z之间的任意一个字符
[^a-z] 匹配除了a到z之间的字符以外的字符
\d 匹配数字字符
\D 匹配非数字字符
\w 匹配字母、数字、下划线
\W 匹配非字母、数字、下划线
\s 匹配空白字符
\S 匹配非空白字符
. 匹配任意字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配前面的字符0次或多次
+ 匹配前面的字符1次或多次
? 匹配前面的字符0次或1次
{n} 匹配前面的字符恰好n次
{n,} 匹配前面的字符至少n次
{n,m} 匹配前面的字符至少n次,最多m次
| 匹配两个表达式之一
( ) 分组表达式

Java中的正则表达式实例

下面是一些常见的Java正则表达式实例:

  • 匹配邮箱地址:
String regex = "\\w+@\\w+(\\.\\w+)+";
String email = "example@example.com";
boolean isMatch = email.matches(regex);
  • 替换字符串中的特定字符:
String regex = "\\d";
String str = "abc123def456";
String replacedStr = str.replaceAll(regex, "*");
  • 提取字符串中的数字:
String regex = "\\d+";
String str = "abc123def456";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
    System.out.println(matcher.group());
}
  • 判断字符串是否为手机号码:
String regex = "1[3456789]\\d{9}";
String phoneNumber = "13812345678";
boolean isMatch = phoneNumber.matches(regex);

正则表达式的关系图

使用mermaid语法中的erDiagram标识正则表达式的关系图,如下所示:

erDiagram
    CUSTOMER ||--o{ ORDER :