JAVA 正则表达式Matcher

在Java中,正则表达式是一种强大的工具,可以用来处理字符串的匹配、查找和替换等操作。正则表达式Matcher是Java中用来实现正则表达式匹配操作的一个类,通过Matcher类我们可以轻松地在字符串中进行匹配操作。

Matcher类的基本使用

在Java中,我们可以使用Pattern类来创建一个正则表达式对象,然后使用Matcher类来对字符串进行匹配操作。下面是一个简单的示例代码:

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

public class MatcherExample {
    public static void main(String[] args) {
        String text = "Hello, my name is John. I am 25 years old.";
        String patternString = "\\d+";

        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(text);

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

在上面的代码中,我们首先定义了一个字符串text和一个正则表达式patternString,然后使用Pattern类的compile方法编译正则表达式,接着创建Matcher对象并通过find方法查找字符串中与正则表达式匹配的部分,并通过group方法获取匹配的字符串。

Matcher类的常用方法

Matcher类提供了一系列用于字符串匹配处理的方法,下面列举了一些常用的方法:

  • matches():尝试将整个字符串与正则表达式进行匹配。
  • lookingAt():尝试从字符串的开头开始与正则表达式进行匹配。
  • find():查找字符串中与正则表达式匹配的下一个子序列。
  • group():返回与前一次匹配操作匹配的输入子序列。
  • start():返回前一次匹配操作的第一个字符的索引。
  • end():返回前一次匹配操作的最后一个字符的索引。

实际应用示例

下面是一个实际应用示例,假设我们有一个字符串列表,我们想把其中的数字提取出来并计算它们的总和:

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

public class NumberSumCalculator {
    public static void main(String[] args) {
        String[] texts = {"123abc", "456def", "789ghi"};
        String patternString = "\\d+";

        Pattern pattern = Pattern.compile(patternString);
        int sum = 0;

        for (String text : texts) {
            Matcher matcher = pattern.matcher(text);
            while (matcher.find()) {
                sum += Integer.parseInt(matcher.group());
            }
        }

        System.out.println("Total sum: " + sum);
    }
}

在上面的代码中,我们定义了一个字符串数组texts,然后使用正则表达式 "\d+" 匹配字符串中的数字,并将它们累加到sum变量中,最后输出总和。

Matcher类的高级用法

除了基本的匹配操作外,Matcher类还提供了一些高级用法,比如可以通过start和end方法获取匹配子串的起始和结束位置,通过group方法获取匹配的子串等。

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

public class AdvancedMatcherExample {
    public static void main(String[] args) {
        String text = "Hello, my name is John. I am 25 years old.";
        String patternString = "\\b\\w+\\b";

        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            int start = matcher.start();
            int end = matcher.end();
            String word = matcher.group();

            System.out.println("Word: " + word + ", Start: " + start + ", End: " + end);
        }
    }
}

在上面的代码中,我们使用正则表达式 "\b\w+\b" 匹配字符串中的单词,并通过start、end和group方法获取匹配子串的起始位置、结束位置和内容。

类图示例

下面是Matcher类的简单类图:

classDiagram
    class Matcher{
        <<interface>>
        + matches(): boolean
        + lookingAt(): boolean
        + find(): boolean
        + group(): String
        + start(): int
        + end(): int
    }

结论

Matcher类是Java中用来进行正则表达式匹配操作的一个重要类,通过Matcher类