Java PCRE 正则表达式简介及示例
1. 什么是正则表达式
正则表达式是一种用来描述、匹配和处理字符串的强大工具。它使用一种特殊的语法来定义匹配模式,并且可以在文本中进行查找、替换和提取操作。正则表达式广泛应用于文本处理、数据提取、数据验证等领域。
2. Java 中的 PCRE 正则表达式
PCRE (Perl Compatible Regular Expressions) 是一种兼容 Perl 语言的正则表达式语法,它在 Java 中得到了支持。Java 提供了 java.util.regex
包来处理正则表达式,其中的类和方法可以直接支持 PCRE 语法。
3. 正则表达式的基本语法
3.1 字符匹配
.
:匹配任意单个字符。
示例:
String regex = "a.b";
String text1 = "aab";
String text2 = "acb";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 true
[]
:匹配括号中的任意一个字符。
示例:
String regex = "[aeiou]";
String text1 = "apple";
String text2 = "banana";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 false
\
:转义字符,用于匹配特殊字符。
示例:
String regex = "\\[\\]";
String text1 = "[]";
String text2 = "[abc]";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 false
3.2 限定符
*
:匹配前一个字符的零个或多个重复。
示例:
String regex = "a*b";
String text1 = "b";
String text2 = "aab";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 true
+
:匹配前一个字符的一个或多个重复。
示例:
String regex = "a+b";
String text1 = "b";
String text2 = "aab";
System.out.println(text1.matches(regex)); // 输出 false
System.out.println(text2.matches(regex)); // 输出 true
?
:匹配前一个字符的零个或一个重复。
示例:
String regex = "a?b";
String text1 = "b";
String text2 = "ab";
String text3 = "aab";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 true
System.out.println(text3.matches(regex)); // 输出 false
{n}
:匹配前一个字符的恰好 n 次重复。
示例:
String regex = "a{2}b";
String text1 = "aab";
String text2 = "ab";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 false
{n,}
:匹配前一个字符的至少 n 次重复。
示例:
String regex = "a{2,}b";
String text1 = "aab";
String text2 = "aaab";
String text3 = "ab";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 true
System.out.println(text3.matches(regex)); // 输出 false
{n,m}
:匹配前一个字符的 n 到 m 次重复。
示例:
String regex = "a{2,4}b";
String text1 = "aab";
String text2 = "aaab";
String text3 = "aaaab";
String text4 = "aaaaab";
String text5 = "ab";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches(regex)); // 输出 true
System.out.println(text3.matches(regex)); // 输出 true
System.out.println(text4.matches(regex)); // 输出 true
System.out.println(text5.matches(regex)); // 输出 false
3.3 边界匹配
^
:匹配行的开始位置。
示例:
String regex = "^abc";
String text1 = "abcxyz";
String text2 = "xyzabc";
System.out.println(text1.matches(regex)); // 输出 true
System.out.println(text2.matches