Java 语言 正则表达式基础 Pattern与Matcher的匹配规则

Java阿木 发布于 19 天前 2 次阅读


Java 正则表达式基础:Pattern与Matcher的匹配规则

正则表达式(Regular Expression)是一种强大的文本处理工具,它允许我们快速、高效地处理字符串。在Java中,正则表达式通过`java.util.regex`包中的`Pattern`和`Matcher`类来实现。本文将围绕Java语言中的正则表达式基础,详细介绍`Pattern`与`Matcher`的匹配规则,帮助读者更好地理解和应用正则表达式。

正则表达式简介

正则表达式是一种用于匹配字符串中字符组合的模式。它由字符、符号和元字符组成。在Java中,正则表达式主要用于字符串的搜索、替换、分割等操作。

基本字符

- 字符:包括字母、数字、下划线等。

- 特殊字符:包括点号(.)、竖线(|)、星号()、加号(+)、问号(?)等。

元字符

- `.`:匹配除换行符以外的任意字符。

- `[]`:匹配括号内的任意一个字符(字符类)。

- `[^]`:匹配不在括号内的任意一个字符(否定字符类)。

- `()`:分组,用于捕获匹配的子表达式。

- ``:匹配前面的子表达式零次或多次。

- `+`:匹配前面的子表达式一次或多次。

- `?`:匹配前面的子表达式零次或一次。

- `{n}`:匹配前面的子表达式恰好n次。

- `{n,}`:匹配前面的子表达式至少n次。

- `{n,m}`:匹配前面的子表达式至少n次,但不超过m次。

Pattern类

`Pattern`类用于编译正则表达式,生成一个`Pattern`对象。编译后的正则表达式可以多次使用,提高效率。

创建Pattern对象

java

Pattern pattern = Pattern.compile("正则表达式");


匹配规则

- `Pattern`类提供了多种方法用于匹配字符串,如`matcher(String input)`、`split(String input)`、`replaceAll(String input, String replacement)`等。

示例

java

Pattern pattern = Pattern.compile("d{3}-d{2}-d{4}"); // 匹配电话号码


Matcher matcher = pattern.matcher("123-45-6789");


boolean isMatch = matcher.matches(); // 判断是否匹配


System.out.println(isMatch); // 输出:true


Matcher类

`Matcher`类用于对输入字符串进行匹配操作。它提供了多种方法来获取匹配结果,如`find()`、`group()`、`start()`、`end()`等。

创建Matcher对象

java

Matcher matcher = pattern.matcher("输入字符串");


匹配规则

- `Matcher`类提供了多种方法用于匹配字符串,如`find()`、`matches()`、`lookingAt()`、`group()`、`start()`、`end()`等。

示例

java

Pattern pattern = Pattern.compile("d{3}-d{2}-d{4}"); // 匹配电话号码


Matcher matcher = pattern.matcher("123-45-6789");


boolean isMatch = matcher.matches(); // 判断是否匹配


System.out.println(isMatch); // 输出:true

int start = matcher.start(); // 获取匹配的起始位置


int end = matcher.end(); // 获取匹配的结束位置


System.out.println("匹配的起始位置:" + start + ",结束位置:" + end); // 输出:匹配的起始位置:0,结束位置:10


分组与捕获

在正则表达式中,我们可以使用括号`()`来分组,并捕获匹配的子表达式。

示例

java

Pattern pattern = Pattern.compile("d{3}-d{2}-d{4}"); // 匹配电话号码


Matcher matcher = pattern.matcher("123-45-6789");


boolean isMatch = matcher.matches(); // 判断是否匹配


System.out.println(isMatch); // 输出:true

String areaCode = matcher.group(1); // 获取分组1的匹配结果


System.out.println("区号:" + areaCode); // 输出:区号:123


分割字符串

`Pattern`类提供了`split(String input)`方法,用于将输入字符串按照正则表达式分割成多个子字符串。

示例

java

Pattern pattern = Pattern.compile("s+"); // 匹配空格


String[] words = pattern.split("这是一个测试字符串。");


for (String word : words) {


System.out.println(word); // 输出:这是一个测试字符串。


}


替换字符串

`Pattern`类提供了`replaceAll(String input, String replacement)`方法,用于将输入字符串中匹配正则表达式的部分替换为指定的字符串。

示例

java

Pattern pattern = Pattern.compile("d"); // 匹配数字


String input = "123abc456";


String output = pattern.replaceAll(input, "");


System.out.println(output); // 输出:abc


总结

本文介绍了Java语言中的正则表达式基础,包括`Pattern`与`Matcher`的匹配规则、分组与捕获、分割字符串、替换字符串等。通过学习本文,读者可以更好地理解和应用正则表达式,提高字符串处理的效率。在实际开发中,正则表达式是一种非常实用的工具,希望本文能对读者有所帮助。