Java 中的正则表达式遵循通用的正则表达式规则,主要包括以下几个方面:
-
字符匹配:正则表达式可以用来匹配字符串中的特定字符。例如,
a
表示匹配字符串中的字符 "a"。 -
元字符:正则表达式中的元字符具有特殊的含义,例如
.
表示匹配任意单个字符,*
表示匹配零个或多个前面的字符,+
表示匹配一个或多个前面的字符,?
表示匹配零个或一个前面的字符等等。 -
字符类:用
[ ]
包围的字符集合表示一个字符类,表示匹配其中任意一个字符。例如,[abc]
表示匹配字符 "a"、"b" 或 "c" 中的任意一个。 -
量词:用来指定模式重复出现的次数。例如,
{n}
匹配恰好 n 次,{n,}
匹配至少 n 次,{n,m}
匹配至少 n 次但不超过 m 次。 -
转义字符:用来匹配特殊字符的字符,通常以反斜杠
\
开头。例如,\d
匹配一个数字字符,\s
匹配一个空白字符。 -
边界匹配符:用来匹配字符串的边界。例如,
^
匹配字符串的开头,$
匹配字符串的结尾。 -
分组:用圆括号
()
来表示分组,可以对其内的内容进行逻辑分组,并应用于量词或其他操作符。 -
预定义字符类:预定义字符类是常用字符类的简写形式。例如,
\d
匹配一个数字字符,\w
匹配一个单词字符,\s
匹配一个空白字符。 -
反向引用:可以使用反向引用来引用先前匹配的子模式。反向引用使用
\
加上组号来表示。 -
注: 在正则表达式中,
\
是一个转义字符,用于表示后面的字符具有特殊含义。而Java中的字符串也使用\
作为转义字符,因此如果要在 Java 字符串中表示一个\
,需要使用两个反斜杠\\
。因此,在正则表达式中,
\\
表示一个反斜杠字符\
,用于转义后面的字符,使其失去特殊含义,而在 Java 字符串中,也需要使用\\
表示一个反斜杠字符\
。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
// 要匹配的字符串
String text = "Hello, my email is example@example.com and my phone number is 123-456-7890.";
// 创建正则表达式模式
String emailPattern = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b";
String phonePattern = "\\b\\d{3}-\\d{3}-\\d{4}\\b";
// 编译正则表达式
Pattern emailRegex = Pattern.compile(emailPattern);
Pattern phoneRegex = Pattern.compile(phonePattern);
// 创建匹配器对象
Matcher emailMatcher = emailRegex.matcher(text);
Matcher phoneMatcher = phoneRegex.matcher(text);
// 查找匹配项并输出结果
while (emailMatcher.find()) {
System.out.println("Email found: " + emailMatcher.group());
}
while (phoneMatcher.find()) {
System.out.println("Phone number found: " + phoneMatcher.group());
}
}
}