此方法设计用于循环以及 appendTail
和 find
方法中。例如,以下代码将 one dog two dogs in the yard 写入标准输出流中:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
参数:
sb
- 目标字符串缓冲区。
replacement
- 替换字符串。
返回:
匹配器。
抛出:
IllegalStateException
- 如果没有尝试任何匹配,或者以前的匹配操作失败。
IndexOutOfBoundsException
- 如果替换字符串引用模式中不存在的捕获组。
String上可使用正则表达式的操纵,实际上是利用了java.util.regex.Pattern与java.util.regex.Matcher的功能。当调用String的matches()方法时,实际上是调用Pattern的静态方法matches(),这个方法会返回boolean值,表示字符串是否符合正则表达式。
假如想要将正则表达式视为一个对象来重复使用,可以使用Pattern的静态方法compile()进行编译。compile()方法会返回一个Pattern的实例,这个实例代表正则表达式,之后就可以重复使用Pattern实例的matcher()方法来返回一个Matcher的实例,代表符合正则式的实例,这个实例上有一些寻找符合正则式条件的方法可供操纵。范例6.11作了示范。
** 范例6.11UsePatternMatcher.java
import java.util.regex.*;
public class UsePatternMatcher {
public static void main(String[] args) {
String phones1 =
"Justin 的手机号码:0939-100391\n" +
"momor 的手机号码:0939-666888\n";
Pattern pattern = Pattern.compile(".*0939-\\d{6}");
Matcher matcher = pattern.matcher(phones1);
while(matcher.find()) {
System.out.println(matcher.group());
}
String phones2 =
"caterpillar 的手机号码:0952-600391\n" +
"bush 的手机号码:0939-550391";
matcher = pattern.matcher(phones2);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
范例6.11会寻找手机号码为0939开头的号码,假设号码来源不止一个(如phones1、phones2),则可以编译好正则表达式并返回一个Pattern对象,之后就可以重复使用这个Pattern对象,在比对时使用matcher()返回符合条件的Matcher实例。find()方法表示是否有符合的字符串,group()方法则可以将符合的字符串返回。程序的执行结果如下:
Justin 的手机号码:0939-100391
momor 的手机号码:0939-666888
bush 的手机号码:0939-550391
下面使用Pattern与Matcher改写范例6.9,让程序可以返回符合正则式的字符串,而不是返回不符合的字符串。
** 范例6.12RegularExpressionDemo2.java
import java.util.regex.*;
public class RegularExpressionDemo2 {
public static void main(String[] args) {
String text = "abcdebcadxbc";
Pattern pattern = Pattern.compile(".bc");
Matcher matcher = pattern.matcher(text);
while(matcher.find()) {
System.out.println(matcher.group());
}
System.out.println();
}
}
style='font-family:宋体'>执行结果:
abc
ebc
xbc
分享到:
相关推荐
正则表达式在Java中通过`Pattern`和`Matcher`类实现,这两个类都位于`java.util.regex`包中。本文将深入探讨这两个类的工作原理,并通过示例代码加深理解。 `Pattern`类是对正则表达式进行编译后得到的模式对象,它...
`java.util.regex`包提供了`Pattern`和`Matcher`两个核心类,它们协同工作,使得开发者能够利用正则表达式进行复杂的字符串操作。 `Pattern`类是正则表达式的核心,它将文本模式编译成一个内部表示,以便高效地执行...
Java中的正则表达式功能主要通过`java.util.regex`包来实现,该包提供了两个核心类:`Pattern`和`Matcher`。 #### 二、Pattern类 `Pattern`类代表预编译的正则表达式。它提供了静态方法`compile()`用于创建`...
文中通过实际案例演示,借助于 java.util.regex 包下提供的 Pattern 和 Matcher 类实现了对电子邮箱地址以及固定格式电话号码的有效检索和提取。 适用人群:有一定 Java 编程经验的技术人员,尤其是对于字符串处理有...
`Matcher`类是`Pattern`的实例,它提供了多种方法来执行实际的匹配操作。`Matcher`对象是通过调用`Pattern.matcher(CharSequence charSequence)`创建的,其中`CharSequence`接口的实现如`String`可以作为参数传入。 ...
主要介绍了Java正则相关的Pattern和Matcher类及遇到的坑,本文给大家提到了Matcher 里面的三个方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
`Matcher`类是`Pattern`的实例,它负责实际的文本匹配操作。通常,我们通过`Pattern`对象的`matcher()`方法创建`Matcher`对象,如下所示: ```java Matcher matcher = pattern.matcher("待匹配的文本"); ``` `...
在压缩包文件列表中提到的`regdemo`可能是演示正则表达式功能的代码文件,可能包含了一个或多个`Pattern`和`Matcher`的实例,用于演示和测试不同的正则表达式操作。 总的来说,Java的正则表达式功能强大且灵活,是...
在Java中,正则表达式API是通过java.util.regex包提供的,它包含了许多类和接口,如Pattern、Matcher和PatternSyntaxException等,这些使得在Java程序中使用正则表达式变得简单而高效。 ### 1. 正则表达式语法 ...
Matcher是Pattern的一个实例,可以通过`pattern.matcher(CharSequence input)`方法创建。Matcher提供了多种方法,如`matches()`、`find()`、`replaceAll()`和`replaceFirst()`等,用于执行不同的正则表达式操作。 ...
在Java中,正则表达式主要通过java.util.regex包中的Pattern和Matcher类来实现。 **1. 正则表达式基础** 正则表达式由普通字符(例如字符'a'到'z')和特殊字符(称为元字符)组成。一些常见的元字符包括: - `.`...
主要介绍了Java matches类,Pattern类及matcher类用法,结合实例形式分析了java matches类,Pattern类及matcher类针对字符串常见操作技巧与相关注意事项,需要的朋友可以参考下
2. **Matcher类**:Pattern对象创建的Matcher实例用于在具体字符串上执行匹配操作。如: ```java Matcher matcher = pattern.matcher("123abc456"); ``` 3. **匹配方法**:Matcher类提供了多种匹配方法,如`...
通过实例和详细解释,这份文档旨在帮助读者掌握Java正则表达式的基本用法和常见技巧,以便在实际开发中更加高效地处理字符串。了解这些基础知识后,可以进一步探索高级特性,如分组、预查、回溯限制等,提升文本处理...
Matcher matcher = pattern.matcher(str); while(matcher.find()) { String group = matcher.group(); String res = group.substring(1, group.length() - 1); System.out.println(group + ":" + res); } }
2. **Matcher类**:`Matcher`是`Pattern`的实例,它负责实际的字符串匹配工作。你可以使用`Matcher`的`matches()`、`find()`等方法检查字符串是否符合正则表达式。例如,检查手机号码是否有效: ```java String ...
在JAVA中,正则表达式主要通过`java.util.regex`包下的`Pattern`和`Matcher`类来实现。其核心优势在于能够以更少的代码量完成复杂的文本处理任务,提高程序的执行效率。 ### 学习正则表达式的挑战 尽管正则表达式...
在Java中,正则表达式主要通过`java.util.regex`包中的`Pattern`和`Matcher`类来使用。 2. 元字符:正则表达式中有一些特殊字符,如`.`代表任意字符,`\d`代表数字,`\s`代表空白字符,`\w`代表字母、数字或下划线...