Java 正则表达式

avatar
作者
筋斗云
阅读量:0

正则表达式(Regular Expression,简称为Regex或RegExp)是用来描述字符串模式的工具,它在Java中被广泛应用于文本处理和匹配操作。Java中的正则表达式主要通过 `java.util.regex` 包来实现。

### 基本概念

1. **字面量字符**: 匹配自身的字符,例如 `abc` 匹配 "abc"。
2. **字符类**: 用方括号 `[]` 表示,例如 `[abc]` 匹配单个字符 `a`、`b` 或 `c`。
3. **预定义字符类**: 如 `\d` 匹配任意数字,`\w` 匹配任意单词字符。
4. **量词**: 指定匹配次数,例如 `*` 匹配零次或多次,`+` 匹配一次或多次,`?` 匹配零次或一次。
5. **边界匹配符**: 如 `^` 表示行的开头,`$` 表示行的结尾。
6. **分组和捕获**: 使用小括号 `()` 进行分组,可以捕获匹配的子串。
7. **反向引用**: 使用 `\1`、`\2` 等来引用分组捕获的内容。

### Java中的正则表达式示例

#### 示例1:匹配邮箱地址

```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        String input = "Email addresses: alice@example.com, bob@gmail.com, charlie@domain.com";
        String regex = "\\b[\\w.-]+@[\\w.-]+\\.\\w{2,4}\\b";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            System.out.println("Found email: " + matcher.group());
        }
    }
}
```

- **解释**:
  - `\b`: 表示单词边界,确保匹配整个邮箱地址。
  - `[\\w.-]+`: 匹配邮箱地址中的用户名部分,可以包含字母、数字、下划线、句点和连字符。
  - `@`: 匹配邮箱地址中的 `@` 符号。
  - `[\\w.-]+`: 匹配邮箱地址中的域名部分,可以包含字母、数字、下划线、句点和连字符。
  - `\\.`: 匹配邮箱地址中的点号 `.`。
  - `\w{2,4}`: 匹配邮箱地址中的顶级域名,如 `.com`、`.org` 等。

#### 示例2:替换字符串中的空格

```java
public class RegexReplaceExample {
    public static void main(String[] args) {
        String input = "Hello    world! This    is    Java    regex    example.";
        String regex = "\\s+"; // 匹配一个或多个空格

        String replaced = input.replaceAll(regex, " ");
        System.out.println("Original: " + input);
        System.out.println("Replaced: " + replaced);
    }
}
```

- **解释**:
  - `\s+`: 匹配一个或多个空格字符。
  - `replaceAll(regex, " ")`: 使用空格替换匹配到的空格字符。

### 总结

Java 的正则表达式提供了强大的文本处理功能,通过 `Pattern` 和 `Matcher` 类可以实现字符串的匹配、查找和替换操作。熟练掌握正则表达式可以极大地简化复杂文本处理任务,是Java中常用的工具之一。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!