📜  Java中的模式引用(字符串)方法与示例(1)

📅  最后修改于: 2023-12-03 15:16:33.714000             🧑  作者: Mango

Java中的模式引用(字符串)方法与示例

在Java编程中,模式引用是指使用正则表达式来搜索特定模式的方法。Java中的模式引用工具类为java.util.regex。该类提供了不同的方法来搜索、匹配和替换字符串的指定模式。

Pattern类

Java中使用正则表达式的第一步是创建一个Pattern对象。Pattern.compile()方法可以将字符串转换为一个Pattern对象。以下是该方法的示例:

Pattern pattern = Pattern.compile("java");
Matcher类

一旦有了Pattern,就可以使用Matcher来搜索和匹配特定的字符串。Matcher类使用Pattern来搜索或匹配一个字符串。以下是示例:

Pattern pattern = Pattern.compile("java");
Matcher matcher = pattern.matcher("Java is a programming language.");
if (matcher.find()) {
    System.out.println("Match found!");
}
else {
    System.out.println("Match not found.");
}

上面的示例将输出“Match found!”,因为在字符串“Java is a programming language.”中匹配到了“java”。

我们也可以使用Matcher.matches()方法来在整个字符串中查找匹配项,而不是只在字符串中搜索第一个匹配。

Pattern pattern = Pattern.compile("java");
Matcher matcher = pattern.matcher("Java is a programming language.");
if (matcher.matches()) {
    System.out.println("Match found!");
} else {
    System.out.println("Match not found.");
}

上面的示例将输出“Match not found.”,因为“Java is a programming language.”不完全匹配“java”。

除此之外,还有一些其他的方法可以在Matcher中使用:

  • Matcher.replaceFirst():用Replacement字符串替换第一个匹配。
  • Matcher.replaceAll():用Replacement字符串替换所有匹配项。
  • Matcher.group():返回最后一个匹配的子串。

以下是这些方法的示例:

Pattern pattern = Pattern.compile("java");
Matcher matcher = pattern.matcher("Java is a programming language.");

String replaced = matcher.replaceFirst("JAVA");
System.out.println(replaced); // 输出"JAVA is a programming language."

replaced = matcher.replaceAll("JAVA");
System.out.println(replaced); // 输出"JAVA is a programming language."

matcher.find();
String match = matcher.group(); // 返回最后一个匹配的子串
System.out.println(match); // 输出"java"
示例

以下是一个示例,它搜索一段文本中的所有电子邮件地址:

String text = "Contact us at info@example.com or support@example.com.";
String patternString = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b";

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

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

上面的示例将输出:

Found: info@example.com
Found: support@example.com

这里的模式字符串匹配电子邮件地址的通用格式,并且将忽略大小写。