释放双眼,带上耳机,听听看~!
\d 表示一个0-9的数字 Java中要用双反斜杠
abc 精确匹配abc,严格区别大小写。特殊字符要转义 "abc"
特殊符号.可以匹配任意一个字符 "a.b"
\w 匹配一个字母、数字、下划线
"java\\w" 匹配 javaa java2 java!
\W 匹配一个非字母、数字、下划线
"java\\W" 匹配"java!" "java "
\s 匹配一个空白字符 tab也算一个空白字符
\S 匹配非空白字符
"A\\SB"可以匹配 "A@B" "AAB"
\D 匹配一个非数字
* 匹配任意个字符
"A\d*" 可以匹配A加上任意个数字 A A001 A1234
+ 匹配至少一个字符
"A\d+" 可以匹配A加上至少一个数字 A0 A11 A2343
? 匹配0个或一个字符
"A\d" 可以匹配A加上0个或一个数字 A A2
{n} 匹配n个字符
"\d{6}"匹配六个数字 "123456" "666666"
{n,m}匹配n-m个字符
"\d{3,5}"匹配三到五个数字 "123" "12345"
{n,}匹配至少n个字符
"\d{3,}"匹配至少三个数字
^和$匹配开头和结尾
"^A\d{3}$"表示以A开头+三个数字 A001 A666 A123
[...]匹配[]中的某一个字符
[abc]1 匹配 a1 b1 c1
[a-f]1 匹配 a-f其中一个字母加上数字1
[a-f0-9]{6} 匹配6个字符,字符是由a-f和0-9随意组成
[a-f0-9JYT_] 匹配6个字符,字符由a-f 和0-9和JYT和_中随意组成
[^...]匹配非范围内的字符
[^0-9]{6} 匹配六个字符,但不能有0-9范围内的数字
A|B 匹配A或者B,真正使用的时候加括号
(JAVA|PHP) 匹配JAVA或者PHP
learn\s(java|php) 匹配learn java 或者是 learn php
用到的类Pattern和Matcher
(...)用于分组
"(\d{4})\-(\d{1,2})\-(\d{1,2})"
"2016-12-12" 分组成为"2016" "12" "12"
为了提高匹配效率应该先创建匹配对象
Pattern pattern = Pattern.compile("^\\d{3,4}\\-\\d{6,6}$")
pattern.matcher("010-12345678").matches();
pattern.matcher("020-1234567").matches();
?的第二种含义表示非贪婪匹配
就是尽可能少的匹配