在 java.util.regex 包中
Pattern类: 在Java中,正则表达式的载体。使用正则表达式进行字符串的校验、切割、替
换,都需要使用到这个类。
Matcher类: 在Java中, 对一个正则校验的结果描述。
fifind()
从字符串的第0位开始查询, 查询是否有满足指定规则的子部分。
当再次调用fifind()的时候, 从上次查询到的位置开始, 继续向后查询。
无论是 matches, 还是fifind, 还是lookingAt, 在字符串中进行校验、匹配的时候, 是有一
个浮标存在的。
public class Regex2 {
public static void main(String[] args) {
// 1. 准备一个数据源
String data = "abc123hello world456lily789lucy012uncle111wang";
// 2. 将一个字符串变异成正则对象
Pattern pattern = Pattern.compile("\\d+");
// 3. 使用一个正则和一个字符串进行校验
Matcher matcher = pattern.matcher(data);
// 3.1. 获取整体校验的结果
// 匹配逻辑:
// 从第0个字符开始,判断每一个字符是否否则当前的正则。
// 当找到了有不符合当前正则部分的时候,就会停止继续向后查找,直接返
回false
System.out.println(matcher.matches());
// 3.2. find()
while (matcher.find()) {
System.out.print("匹配到了字符串: " + matcher.group() + ", ");
System.out.println("下标范围: [" + matcher.start() + ", " +
matcher.end() + ")");
//
start()
获取当前匹配到的部分首字符的下标。
end()
获取当前匹配到的部分尾字符的下标 + 1。
lookingAt()
查找字符串中, 是否有满足指定规则的子部分。 每次查询
都从第0位开始。
matches()
得到本次整体匹配的结果。 一个字符串是否和一个正则表
达式是整体匹配的。
fifind()
查找字符串中, 是否有满足指定规则的子部分。
fifind(int
start)
查找字符串中, 从指定的下标位开始往后, 有没有满足指
定规则的子部分
group()
获取当前匹配到的字符串。
}
// 3.3. lookingAt()
System.out.println(matcher.lookingAt() + ", " + matcher.group() +
", [" + matcher.start() + ", " + matcher.end() + ")");
}
}
public class Regex3 {
public static void main(String[] args) {
//
Pattern pattern = Pattern.compile("(1\\d{2})(\\d{4})(\\d{4})");//正则赋给pattern
Matcher matcher = pattern.matcher("17788889999");//用pattern的正则来判断后面的字符串
// 获取分组的数量
System.out.println(matcher.groupCount());
// 获取每一个分组的值之前,先进行整体的匹配
boolean ret = matcher.matches();
// 获取到某一个分组的内容
System.out.println(matcher.group(1));
}
}