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类