`
yingpengfei1215
  • 浏览: 39931 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Pattern 和matcher 实例

 
阅读更多

此方法设计用于循环以及 appendTailfind 方法中。例如,以下代码将 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中通过`Pattern`和`Matcher`类实现,这两个类都位于`java.util.regex`包中。本文将深入探讨这两个类的工作原理,并通过示例代码加深理解。 `Pattern`类是对正则表达式进行编译后得到的模式对象,它...

    JAVA正则表达式 Pattern和Matcher

    `java.util.regex`包提供了`Pattern`和`Matcher`两个核心类,它们协同工作,使得开发者能够利用正则表达式进行复杂的字符串操作。 `Pattern`类是正则表达式的核心,它将文本模式编译成一个内部表示,以便高效地执行...

    java正则表达式Pattern,Matcher

    Java中的正则表达式功能主要通过`java.util.regex`包来实现,该包提供了两个核心类:`Pattern`和`Matcher`。 #### 二、Pattern类 `Pattern`类代表预编译的正则表达式。它提供了静态方法`compile()`用于创建`...

    Java 正则表达式的应用及其实现 - 基于Pattern与Matcher类的邮件和电话匹配

    文中通过实际案例演示,借助于 java.util.regex 包下提供的 Pattern 和 Matcher 类实现了对电子邮箱地址以及固定格式电话号码的有效检索和提取。 适用人群:有一定 Java 编程经验的技术人员,尤其是对于字符串处理有...

    java_正则表达式pattern类Matcher类_(字符串匹配)

    `Matcher`类是`Pattern`的实例,它提供了多种方法来执行实际的匹配操作。`Matcher`对象是通过调用`Pattern.matcher(CharSequence charSequence)`创建的,其中`CharSequence`接口的实现如`String`可以作为参数传入。 ...

    Java正则相关的Pattern和Matcher类及遇到的坑

    主要介绍了Java正则相关的Pattern和Matcher类及遇到的坑,本文给大家提到了Matcher 里面的三个方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    pattern类使用方法

    `Matcher`类是`Pattern`的实例,它负责实际的文本匹配操作。通常,我们通过`Pattern`对象的`matcher()`方法创建`Matcher`对象,如下所示: ```java Matcher matcher = pattern.matcher("待匹配的文本"); ``` `...

    Java rexexp Pattern

    在压缩包文件列表中提到的`regdemo`可能是演示正则表达式功能的代码文件,可能包含了一个或多个`Pattern`和`Matcher`的实例,用于演示和测试不同的正则表达式操作。 总的来说,Java的正则表达式功能强大且灵活,是...

    正则表达式API和实例

    在Java中,正则表达式API是通过java.util.regex包提供的,它包含了许多类和接口,如Pattern、Matcher和PatternSyntaxException等,这些使得在Java程序中使用正则表达式变得简单而高效。 ### 1. 正则表达式语法 ...

    一个java正规表达式工具类

    Matcher是Pattern的一个实例,可以通过`pattern.matcher(CharSequence input)`方法创建。Matcher提供了多种方法,如`matches()`、`find()`、`replaceAll()`和`replaceFirst()`等,用于执行不同的正则表达式操作。 ...

    java正则表

    在Java中,正则表达式主要通过java.util.regex包中的Pattern和Matcher类来实现。 **1. 正则表达式基础** 正则表达式由普通字符(例如字符'a'到'z')和特殊字符(称为元字符)组成。一些常见的元字符包括: - `.`...

    Java matches类,Pattern类及matcher类用法示例

    主要介绍了Java matches类,Pattern类及matcher类用法,结合实例形式分析了java matches类,Pattern类及matcher类针对字符串常见操作技巧与相关注意事项,需要的朋友可以参考下

    J.zip正则的另一个

    2. **Matcher类**:Pattern对象创建的Matcher实例用于在具体字符串上执行匹配操作。如: ```java Matcher matcher = pattern.matcher("123abc456"); ``` 3. **匹配方法**:Matcher类提供了多种匹配方法,如`...

    java正则表达式实例讲解.doc

    通过实例和详细解释,这份文档旨在帮助读者掌握Java正则表达式的基本用法和常见技巧,以便在实际开发中更加高效地处理字符串。了解这些基础知识后,可以进一步探索高级特性,如分组、预查、回溯限制等,提升文本处理...

    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); } }

    Android PatternDemo

    2. **Matcher类**:`Matcher`是`Pattern`的实例,它负责实际的字符串匹配工作。你可以使用`Matcher`的`matches()`、`find()`等方法检查字符串是否符合正则表达式。例如,检查手机号码是否有效: ```java String ...

    JAVA正则表达式实例教程.

    在JAVA中,正则表达式主要通过`java.util.regex`包下的`Pattern`和`Matcher`类来实现。其核心优势在于能够以更少的代码量完成复杂的文本处理任务,提高程序的执行效率。 ### 学习正则表达式的挑战 尽管正则表达式...

    JAVA正则表达式实例教程

    在Java中,正则表达式主要通过`java.util.regex`包中的`Pattern`和`Matcher`类来使用。 2. 元字符:正则表达式中有一些特殊字符,如`.`代表任意字符,`\d`代表数字,`\s`代表空白字符,`\w`代表字母、数字或下划线...

Global site tag (gtag.js) - Google Analytics