Java 正则表达式规则
什么是正则表达式
正则表达式是一种用于匹配和处理字符串的强大工具。它是通过一种特定的语法规则来描述字符串模式的。在Java中,我们可以使用正则表达式来进行字符串的匹配、替换、分割等操作。正则表达式在文本处理、表单验证、数据提取等场景中都有广泛应用。
正则表达式的基本规则
正则表达式由普通字符和特殊字符组成。普通字符表示精确匹配,特殊字符则表示特定的模式或操作。
普通字符
普通字符是指除了特殊字符以外的所有字符。例如,正则表达式 java
匹配的是包含 "java" 的字符串。
特殊字符
特殊字符在正则表达式中具有特殊的含义,常用的特殊字符有:
.
: 匹配任意单个字符,除了换行符。[]
: 匹配方括号中的任意一个字符。[^]
: 匹配除了方括号中的字符以外的任意一个字符。-
: 匹配某个范围内的字符,如[a-z]
表示匹配小写字母。*
: 匹配前面的字符零次或多次。+
: 匹配前面的字符一次或多次。?
: 匹配前面的字符零次或一次。|
: 匹配两个或多个表达式中的一个。()
: 标记一个子表达式的开始和结束位置。
限定符
限定符用于指定匹配的次数。
{n}
: 匹配前面的字符恰好 n 次。{n,}
: 匹配前面的字符至少 n 次。{n,m}
: 匹配前面的字符至少 n 次,但不超过 m 次。
转义字符
在正则表达式中,有些字符有特殊含义,如果要匹配这些特殊字符本身,需要使用转义字符 \
。
例如,正则表达式 \\d
表示匹配数字。
正则表达式的使用
在Java中,我们可以使用 java.util.regex
包下的类来进行正则表达式的匹配操作。常用的类有 Pattern
和 Matcher
。
正则表达式的编译
在使用正则表达式之前,我们需要先将其编译为 Pattern
对象。
String regex = "java";
Pattern pattern = Pattern.compile(regex);
正则表达式的匹配
编译完成后,我们可以使用 Matcher
对象来进行匹配操作。
String text = "I love java programming.";
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("匹配成功");
} else {
System.out.println("未匹配到");
}
正则表达式的分组
可以使用 ()
来标记一个子表达式,然后通过 group()
方法获取匹配的结果。
String text = "My phone number is 123-4567890.";
String regex = "(\\d{3})-(\\d{7})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
String phoneNumber = matcher.group();
String areaCode = matcher.group(1);
String number = matcher.group(2);
System.out.println("Phone number: " + phoneNumber);
System.out.println("Area code: " + areaCode);
System.out.println("Number: " + number);
}
输出结果为:
Phone number: 123-4567890
Area code: 123
Number: 4567890
正则表达式的替换
可以使用 replaceAll()
方法将匹配的字符串替换为指定的字符串。
String text = "Hello, Java!";
String regex = "Java";
String replacement = "JavaScript";
String replacedText = text.replaceAll(regex, replacement);
System.out.println(replacedText);
输出结果为:
Hello, JavaScript!
正则表达式的分割
可以使用 split()
方法将字符串分割