Java 正则表达式学习笔记

正则表达式基础

正则表达式是用于匹配字符串模式的一种语法。在Java中,正则表达式使用java.util.regex包实现。

在正则表达式中,有一些特殊字符具有特定含义:

  • . 表示任意单个字符。
  • * 表示前一个字符出现0次或多次。
  • + 表示前一个字符出现1次或多次。
  • ? 表示前一个字符出现0次或1次。
  • ^ 表示匹配输入字符串的开始位置。
  • $ 表示匹配输入字符串的结束位置。
  • [] 表示匹配括号内的任意一个字符。
  • | 表示或运算符。
  • \ 用于转义以上特殊字符。

Java中的正则表达式

在Java中,可以使用Pattern类和Matcher类来实现正则表达式的匹配。

javaCopy Code
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void main(String[] args) { String input = "Java is a programming language"; Pattern pattern = Pattern.compile("Java"); Matcher matcher = pattern.matcher(input); if (matcher.find()) { System.out.println("Found a match!"); } else { System.out.println("No match found."); } } }

在上述示例中,我们定义了一个字符串input,然后创建了一个Pattern对象来匹配字符串中的Java子串。然后,我们创建了一个Matcher对象,并使用find()方法执行实际的匹配操作。

实例

匹配数字

javaCopy Code
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void main(String[] args) { String input = "The number is 1234567890"; Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("Found a match: " + matcher.group()); } } }

在上述示例中,我们定义了一个包含数字的字符串input,然后创建了一个正则表达式来匹配任意数量的数字。我们使用while循环遍历所有匹配,并使用matcher.group()方法获取匹配结果。

邮箱验证

javaCopy Code
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void main(String[] args) { String input = "example@example.com"; Pattern pattern = Pattern.compile("\\b[\\w.%-]+@[-.\\w]+\\.[A-Za-z]{2,4}\\b"); Matcher matcher = pattern.matcher(input); if (matcher.find()) { System.out.println("Valid email address."); } else { System.out.println("Invalid email address."); } } }

在上述示例中,我们定义了一个包含电子邮件地址的字符串input,然后创建了一个正则表达式来匹配电子邮件地址的格式。我们使用matcher.find()方法来验证字符串中是否包含符合格式的电子邮件地址。