public class Go {
public static void main(String[] args) {
//1.初步认识正则
// p("abc".matches("...")); //匹配任意字符
// p("fs2342fsfs".replaceAll("\\d", "-")); //将数字替换为- ;\d表示一位数字的正则,\\表示java里的一个\
//
// Pattern p = Pattern.compile("[a-z]{3}"); //匹配3个字母,a到z的范围
// Matcher m = p.matcher("fac");
// p(m.matches());
//2.初步认识 . * +
// p("aaaa".matches("a?")); //1或0次 false
// p("aaaa".matches("a*")); //0或多次 true
// p("aaaa".matches("a+")); //1或多次 这些可能性都包括了,闭区间 true
// p("".matches("a+"));
// p("323232".matches("\\d{3,10}")); //数字出现3到10次
// p("192.178.8.100".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")); // \\. 表示一个.
//3.范围
// p("a".matches("[abc]")); //取a或b或c其中一个,即满足
// p("d".matches("[^abc]")); //除了a,除了b,除了c的补集都可以
//
// p("a".matches("[a-zA-Z]")); //a到z或A到Z ,写法1 ,只有1个字符
// p("a".matches("[a-z]|[A-Z]")); //a到z或A到Z ,写法2
// p("a".matches("[a-z[A-Z]]")); //a到z或A到Z ,写法3
// p("A".matches("[A-Z&&[RFG]]")); //取交集:A到Z,并且是RFG其中的1个
//4.认识 \s \w \d \
/* p("\\".matches("\\\\")); // 前面两个\\ ,标示要去匹配1个\;正则的规则是一个\,要匹配的是一个\,所以前面都要加一个\,总共4个\;
//例如\\d;将d变为\,要用2个标示,所以总共4个
// \w 单词字符:[a-zA-Z_0-9]
// \W 非单词字符:[^\\w]
p("a_8".matches("\\w{3}")); //要求:是字符,而且正好是3个
// \d 数字:[0-9]
// \D 非数字: [^0-9]
p("3232".matches("\\d{4}"));//要求是数字,而且正好是4个
//
// \s 空白字符:[ \t\n\x0B\f\r] 空格,空字符串也是
// \S 非空白字符:[^\\s]
p(" \t\n\r".matches("\\s{4}")); //要求是4个空白字符
p("fs".matches("[^\\s]{2}")); //要求:2个,且非空字符串
*/
//5.POSIX Style 兼容各种Unix版本的统一写法
// p("a".matches("\\p{Lower}")); //标示一个小写字母
//6.单词边界
// p("hello sir".matches("^h.*")); //^写到[]里面表示取反,写到外面表示行的开头是以h字母开始
// p("hello sir".matches(".*r$")); //$标示行的结束时以r字母结束 -true
// p("hello sir".matches("^h[a-z]{3}o\\b.*")); // \\b表示单词分隔符,如空格回车等特殊字符--true
// p("hellosir".matches("^h[a-z]{3}o\\b.*")); //false
//7.空白行统计(每行是空的,但里面也可能敲了很多空格噢,统计这样文本的空行)
// p(" \n".matches("^[\\s&&[^\\n]]*\\n$")); //开头的是一空白符但不是换行符,中间出现了这个0次或多次,结束是一个换行符
//8.正则分组
// Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
// String s = "123aa-34345bb-234cc-00";
// Matcher m = p.matcher(s);
// while(m.find())
// {
// System.out.println("m.group():"+m.group()); //打印所有
//
// System.out.println("m.group(1):"+m.group(1)); //打印数字的
//
// System.out.println("m.group(2):"+m.group(2)); //打印字母的
// System.out.println();
//
// }
//9.贪婪与非贪婪匹配
// .* 贪婪匹配 <div>test1</div>bb<div>test2</div>
// Pattern p = Pattern.compile("<div>.*</div>");
// String s = "aa<div>test1</div>bb<div>test2</div>cc";
// Matcher m = p.matcher(s);
// while(m.find()){
// System.out.println(m.group(0));
// }
//非贪婪匹配
// <div>test1</div>
// <div>test2</div>
// Pattern p = Pattern.compile("<div>.*?</div>");
// String s = "aa<div>test1</div>bb<div>test2</div>cc";
// Matcher m = p.matcher(s);
// while(m.find()){
// System.out.println(m.group(0));
// }
}
public static void p(Object o){
System.out.println(o);
}
}
public static void main(String[] args) {
//1.初步认识正则
// p("abc".matches("...")); //匹配任意字符
// p("fs2342fsfs".replaceAll("\\d", "-")); //将数字替换为- ;\d表示一位数字的正则,\\表示java里的一个\
//
// Pattern p = Pattern.compile("[a-z]{3}"); //匹配3个字母,a到z的范围
// Matcher m = p.matcher("fac");
// p(m.matches());
//2.初步认识 . * +
// p("aaaa".matches("a?")); //1或0次 false
// p("aaaa".matches("a*")); //0或多次 true
// p("aaaa".matches("a+")); //1或多次 这些可能性都包括了,闭区间 true
// p("".matches("a+"));
// p("323232".matches("\\d{3,10}")); //数字出现3到10次
// p("192.178.8.100".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")); // \\. 表示一个.
//3.范围
// p("a".matches("[abc]")); //取a或b或c其中一个,即满足
// p("d".matches("[^abc]")); //除了a,除了b,除了c的补集都可以
//
// p("a".matches("[a-zA-Z]")); //a到z或A到Z ,写法1 ,只有1个字符
// p("a".matches("[a-z]|[A-Z]")); //a到z或A到Z ,写法2
// p("a".matches("[a-z[A-Z]]")); //a到z或A到Z ,写法3
// p("A".matches("[A-Z&&[RFG]]")); //取交集:A到Z,并且是RFG其中的1个
//4.认识 \s \w \d \
/* p("\\".matches("\\\\")); // 前面两个\\ ,标示要去匹配1个\;正则的规则是一个\,要匹配的是一个\,所以前面都要加一个\,总共4个\;
//例如\\d;将d变为\,要用2个标示,所以总共4个
// \w 单词字符:[a-zA-Z_0-9]
// \W 非单词字符:[^\\w]
p("a_8".matches("\\w{3}")); //要求:是字符,而且正好是3个
// \d 数字:[0-9]
// \D 非数字: [^0-9]
p("3232".matches("\\d{4}"));//要求是数字,而且正好是4个
//
// \s 空白字符:[ \t\n\x0B\f\r] 空格,空字符串也是
// \S 非空白字符:[^\\s]
p(" \t\n\r".matches("\\s{4}")); //要求是4个空白字符
p("fs".matches("[^\\s]{2}")); //要求:2个,且非空字符串
*/
//5.POSIX Style 兼容各种Unix版本的统一写法
// p("a".matches("\\p{Lower}")); //标示一个小写字母
//6.单词边界
// p("hello sir".matches("^h.*")); //^写到[]里面表示取反,写到外面表示行的开头是以h字母开始
// p("hello sir".matches(".*r$")); //$标示行的结束时以r字母结束 -true
// p("hello sir".matches("^h[a-z]{3}o\\b.*")); // \\b表示单词分隔符,如空格回车等特殊字符--true
// p("hellosir".matches("^h[a-z]{3}o\\b.*")); //false
//7.空白行统计(每行是空的,但里面也可能敲了很多空格噢,统计这样文本的空行)
// p(" \n".matches("^[\\s&&[^\\n]]*\\n$")); //开头的是一空白符但不是换行符,中间出现了这个0次或多次,结束是一个换行符
//8.正则分组
// Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
// String s = "123aa-34345bb-234cc-00";
// Matcher m = p.matcher(s);
// while(m.find())
// {
// System.out.println("m.group():"+m.group()); //打印所有
//
// System.out.println("m.group(1):"+m.group(1)); //打印数字的
//
// System.out.println("m.group(2):"+m.group(2)); //打印字母的
// System.out.println();
//
// }
//9.贪婪与非贪婪匹配
// .* 贪婪匹配 <div>test1</div>bb<div>test2</div>
// Pattern p = Pattern.compile("<div>.*</div>");
// String s = "aa<div>test1</div>bb<div>test2</div>cc";
// Matcher m = p.matcher(s);
// while(m.find()){
// System.out.println(m.group(0));
// }
//非贪婪匹配
// <div>test1</div>
// <div>test2</div>
// Pattern p = Pattern.compile("<div>.*?</div>");
// String s = "aa<div>test1</div>bb<div>test2</div>cc";
// Matcher m = p.matcher(s);
// while(m.find()){
// System.out.println(m.group(0));
// }
}
public static void p(Object o){
System.out.println(o);
}
}