package com.comcons.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern pattern = Pattern.compile("(\\d+)");
Matcher matcher = pattern.matcher("1233");
System.out.println(matcher.matches());
System.out.println(matcher.groupCount());
System.out.println(matcher.group());
System.out.println("ss".matches(".*")); //true
System.out.println("ss".matches("s")); //false
System.out.println("sss".matches("s*")); //true
System.out.println("sss".matches("s?")); //false
System.out.println("".matches("s?")); //这个是true
System.out.println("b".matches("[a-e]|[i-u]")); //true
System.out.println("F".matches("[A-Z&&[EFC]]")); //字符属于A到Z并且在EFC中某一个
System.out.println("\\".matches("\\\\")); //匹配单反斜线 在正则式中用四条反斜线
System.out.println("\\\\".matches("\\\\\\\\"));
System.out.println("^".matches("\\^")); //[#$^*] 也就是说特殊字符在中括号内的时候不用转意
System.out.println(" \n".matches("^[\\s&&[^\\n]]*\\n$")); //匹配所有空白行
pattern = Pattern.compile("\\d{3,5}"); //匹配一个数字序列3--5个数字
String s = "123-34345-223-99";
matcher = pattern.matcher(s);
System.out.println(matcher.matches()); //false 因为匹配要匹配整个字符串,这个完全不符合
matcher.reset(); //重置匹配器,经过了前边的matches()方法后匹配已经走到第四个字符,让匹配器重新回到字符串开始
System.out.println(matcher.find()); //匹配子串,就是在s中查找符合条件的子串,
System.out.println(matcher.start()); //所匹配出的子串的开始位置 0 必须在找到的情况下才可以输出此位置
System.out.println(matcher.end()); //不包括end下标 3
//分组
pattern = Pattern.compile("(\\d{3,5})([a-z]{2})"); //小括号代表分组
s = "123ss-34345dd-223vv-99";
matcher = pattern.matcher(s);
while(matcher.find()){ //如果能找到符合条件的子串
System.out.println(matcher.group()); //不写或者写0 表示匹配出的整个串
System.out.println(matcher.group(1)); //第一个分组,也就是数字部分
System.out.println(matcher.group(2));
}
//在正则匹配的过程中有贪婪和非贪婪的匹配原则
//在正则式中开始加入(?i)表示不区分大小写
}
}
Java 正则式 基础 笔记
最新推荐文章于 2024-06-17 18:31:23 发布