package com.cn.regExp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegExp {
public static void p(Object o) {
System.out.println(o);
}
public static void main(String[] args) {
//初步认识 .* + ?
//.表示一位字符,* 表示零个或多个,+ 表示一个或多个,? 表示一个或零个
// p("a".matches("."));//true,匹配一个字符任何字符
// p("a".matches("a"));//true,匹配一个
//
// p("".matches("a*"));//true,匹配零个
// p("aaaaaaaaaaaaaaa".matches("a*"));//true,匹配多个
//
// p("a".matches("a+"));//true,匹配一个
// p("aaaaaaaaaaaaaaaaaaaa".matches("a+"));//true,匹配多个
//
// p("a".matches("a?"));//true,匹配一个
// p("aaaaa".matches("a?"));//false,匹配多个
// p("".matches("a?"));//true,匹配零个
//
//
// //X{n} X,恰好 n 次
// p("aa".matches("a{2}"));//true,恰好2次a
// //X{n,} X,至少 n 次
// p("aaaaaaaaaa".matches("a{5,}"));//至少5次,最多无限
// //X{n,m} X,至少 n 次,但是不超过 m 次
// p("123333333337628383".matches("\\d{5,100}"));// \\d表示数字 ,匹配数字至少3位最多不超过100位
//
//
// p("aaa.168.0.15".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));//false,验证数字至少1位,最多3位,之间用.分开
// p("192.168.0.15".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));//true
// p("192".matches("[0-2][0-9][0-9]"));//true []表示范围,[0-2]表示在0到2范围内一个数字,[0-9]表示在0到9范围内一个数字
// []表示范围,一个中括号匹配一个字符
// p("a".matches("[abc]"));// true ,匹配中括号内有一个a
// p("a".matches("[^abc]"));//false,匹配除了abc以外的任意字符
// p("a".matches("[a-zA-Z]"));//true,匹配小写的a-z或者大写的A-Z范围内一个字符
// p("a".matches("[a-z | A-Z]"));//true 匹配小写的a-z或者大写的A-Z范围内一个字符
// p("a".matches("[a-z[A-Z]]"));//true 匹配小写的a-z或者大写的A-Z范围内一个字符
// p("R".matches("[A-Z && [RGB]]"));//true 必须在A-Z范围内并且是RGB范围中的一个
//认识 \w 单词字符:[a-zA-Z_0-9] \W 非单词字符:[^\w]
//\d 数字:[0-9] \D 非数字: [^0-9]
//\s 空白字符:[ \t\n\x0B\f\r] \S 非空白字符:[^\s]
// p(" \n\r\t\f".matches("\\s{5}"));//true,匹配5个空白字符
// p(" ".matches("\\s"));//true,匹配一个空白字符
// p(" ".matches("\\S"));//false,匹配一个非空白字符
// p("a_9".matches("\\w{3}"));//true,匹配3位字符组成的单词
// p("$_%".matches("\\w{3}"));//false
// p("abc866666%&^#".matches("[a-z]{1,3}\\d+[&%^#]+"));//true,a-z 出现1次到3次,数字出现一次或多次,&%^# 出现一次或多次
// p("\\abc".matches("\\\\[a-z A-Z]{1,3}"));//true,正则表达式匹配一个反斜线必须用\\
//认识边界匹配器
// ^ 行的开头 $ 行的结尾 \b 单词边界 \z 输入的结尾
// \B 非单词边界 \A 输入的开头 \G 上一个匹配的结尾 \Z 输入的结尾,仅用于最后的结束符(如果有的话)
//匹配以h开头的紧跟a-z的字符出现1到3次,后接o的单词边界,后面为零个或者多个任意的字符
p("hello world".matches("^h[a-z]{1,3}o\\b.*"));//true
p("hello world".matches("^h.*d$"));//true,匹配以h开头的后接任意零个或者多个以d结尾的字符
p("helloWorld".matches("^h[a-z]{1,3}o\\b.*"));//false
//空白行匹配
p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//true,以空白符开头并且不是空白行的零个或者多个以空白行结束
//邮件匹配
p("lichangjun@126.com".matches("\\w+@(\\w+.)+[a-z]{2,3}"));//true
p("121183543@qq.com".matches("\\w+@(\\w+\\.)+[a-z]{2,3}"));//true
}
}