一、正则表达式的概念
正则表达式,regular expression,在代码中通常简写成regex
正则表达式是一个字符串,使用每单个字符串来描述、定义匹配规则,匹配一系列符合某个语法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合规则的文本。
二、正则表达式的匹配规则
在Pattern类中有正则表达式的规则定义,正则表达式中明确区分大小写字母。
1. 字符a:就是代表字符a
. 点代表任意字符,[\\.]
2. 字符\\:第一个\表示对第二个\的转义
[\\d]代表只能是数字,等同于[0-9]
[\\w]代表字母数字下划线,等同于[0-9a-zA-Z_]
3. \t:制表符,tab
4. \n:回车符
5. \r:换行符
6. [abc] :表示匹配范围,可以是abc任意一个
7. [a-z]: 表示匹配范围,表示可以是a-z小写字母中任意一个,同理还有[A-Z] [0-9]
8. [^abc]:表示取反
9. ^ 行的开头,$ 行的结尾,^[abc][0-9]$ 相当于 "[abc][0-9]"
10. X? 代表X出现一次,或一次也不出现.
11. X* 代表X出现0次或多次
12. X+ 代表X出现1次或多次
13. X{n} 代表X出现n次
14 X{n,} 代表X至少应该出现n次
16 X{n,m}代表X最少出现n次,最多出现m次
练习:
1. 解释"[0-9]{6,12}" -->数字0-9,最少6位,最多12位,如123456
2. 解释"1[34578][0-9]{9}" -->,第一位为1,第二位为34578任意一个,然后数字0-9 出现9次
3. 解释 "a*b" -->a出现0次或多次,b结尾,如ab,b,aaaab
4. 校验QQ号码(全数字,0不能开头,最少5位,最多9位)
String QQ = "383661755";
String regex = "[1-9][0-9]{4,8}";
boolean b =QQ.matches(regex);
5. 匹配正整数: [0-9]+ 或\\d+
6. 匹配负整数 :“-[0-9]+"或"-\\d+"
7. 匹配正小数: "\\d+\\.\\d+"
8. 匹配负小数: "-\\d+\\.\\d+"
9. 匹配保留两位小数的正数: "\\d+\\.\\d{2}"
10. 匹配保留1-3位小数的正数: "\\d+\\.\\d{1,3}"
11. 匹配合法邮箱: 第一位不能是数字,可以是下划线,名称最多18位
"\\w+@\\w+(\\.\\w+)+"
二、正则匹配方法
String str = new String("abc");
str.matches(String regex); 返回boolean
三、正则拆分字符串
str.split(String regex),返回string[]数组
如:
String str = "www.baidu.com";
str.split("."); //以.来拆分字符串,得到String数组
结果:{"www","baidu","com"}
以空格来拆分字符串
String str = "a b c";
str.split(" "); -->得到{"a","b","c"}
如果有多个空格
String str = "a b c";
str.split(" +");
三、正则替换
replaceAll(String regex,String replacement)
regex:替换规则
replacement:替换为的字符串
String s = "Hello12345World6789012";将其中的数字全部替换成*号
s.replaceAll("\\d","*");