正则表达式的学习记录

正则表达式的组成规则:

字符:

x 代表一个字符,可以是字母、数字等

\\ 反斜线字符。

\n 新行(换行)符 ('\u000A')

\r 回车符 ('\u000D')

//如下正则表达式,匹配一段字符串中是否有新行、回车符、TESTNAME字符、\d,\\d表示\d

string regEx = "\n\\d*\r*!\\s*TESTNAME“

字符类:

[abc] a、b 或 c,例如"[abc]"可以匹配"plain"中的'a'

[^abc] 任何字符,除了 a、b 或 c,例如"[ ^abc]"可以匹配"plain"中

的'p'、'l'、'i'、'n'。

[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内,例如"[a-z]"可以匹配'a'到'z'范围内的任意小

写字母

[0-9] 0到9的字符都包括,例如"[0-9]"可以匹配'0'到'9'范围内的任意数字

预定义字符类:

"^.$"可以匹配所有字符

\d 数字:[0-9],例如"\\d"可以匹配0-9的所有数字,第一个\是转义符

\w 单词字符:[a-zA-Z_0-9],例如"\w"可以匹配a到z,A到Z,_,0到9这些字符

在正则表达式里面组成单词的东西必须有这些东西组成

边界匹配器:

^ 行的开头 ,例如"^1[abc]$"可以匹配"1a"中的1,不能匹配"a1"中的1

$ 行的结尾 ,例如"^1[abc]$"中$表示正则表达式的结尾

\b 单词边界(需使用模式和匹配器),就是不是单词字符的地方,例如"er\b"可以匹配"never"中的"er",

但不能匹配"verb"中的"er"

数量词:

X? X,一次或一次也没有,例如"do(es)?" 可以匹配 "do" 或 "does" 中的"do"

X* X,零次或多次,例如"zo*" 能匹配"z"以及"zoo"

X+ X,一次或多次,例如"zo+"能匹配"zo"以及"zoo"但不能匹配"z"

X{n} X,恰好n次,例如"o{2}"不能匹配"Bob"中的"o"但是能匹配"food"中的两个o

X{n,} X,至少n次,例如"o{2,}"不能匹配"Bob"中的"o"但能匹配"foooood"中的所有 o

X{n,m} X,至少n次但是不超过m次,例如"o{2,3}"能匹配"foood"中的三个o,但不能匹配"fod"中的一

个o

正则表达式常用方法:

//matches是匹配功能

public boolean matches(String regex)

//案例

public static void main(String[] args) {

//1.正则表达式,匹配:public boolean matches(String regex)

System.out.println("abc".matches("[a-z]{4}"));

}

分割功能:

//split是分割功能

public String[] split(String regex)

//案例

public static void main(String[] args) {

String str = "abc,123,Aaa,DDD";//获得字符串

String[] arr = str.split(",");//分割字符串

for(int i = 0;i<=arr.length - 1;i++){//循环遍历得到每一个字符串

System.out.println(arr[i]);

}

}

替换功能:

//replaceAll是替换功能

public String replaceAll(String regex,String replacement)

//案例

public static void main(String[] args) {

//把dasdDADdaas中所有的大写字母A-Z改为M

System.out.println("dasdDADdaas".replaceAll("[A-Z]", "M"));

}

获取功能:

public static void main(String[] args) {

Pattern p=Pattern.compile("\\d+");

String rs = p.pattern();//获取 \d+

System.out.println("pattern方法获取的结果:"+rs);

//用获取的结果p分割字符串

String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:[email protected]");

//循环遍历得到分割后的字符串

for(String s:str){

System.out.println(s);

}

}

正则表达式的应用:

验证手机号:

//案例

public static void main(String[] args) {

//说明:前三位分别以13,14,15,18开头,第3位使用部分数组,总长度是11位

String regex = "^(13[0-

9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";

Scanner sc = new Scanner(System.in);//从控制台输入字符串信息

String str = sc.nextLine();//获得输入的信息

System.out.println(str.matches(regex));// str字符串是否匹配regex规则

}

验证邮箱:

//案例

public static void main(String[] args) {

//说明:相关字符开头,接着是@,接着是相关字符,接着是.

String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";

Scanner sc = new Scanner(System.in);

String str = sc.nextLine();//获得输入的信息

System.out.println(str.matches(regex));// str字符串是否匹配regex规则

}

验证QQ号:

//案例

public static void main(String[] args) {

//QQ号匹配规则:首字母不为0,第二位可以是0,只能为数字,至少为5位,QQ号从10000开始,据说

是马X腾的

String regex = "[1-9][0-9]{4,}";

//String regex = "[1-9]\\d{4,}"; //另一种写法

Scanner sc = new Scanner(System.in);

String str = sc.nextLine();//获得输入的信息

System.out.println(str.matches(regex));// str字符串是否匹配regex规则

}

你可能感兴趣的:(正则表达式的学习记录)