Java正则表达式
正则表达式匹配规则:
\d:0-9
\w:a-z,A-Z,0-9,_
\s:空格,Tab键
\D:非\d
\W:非\w
\S:非\s
*:任意个字符
+:至少一个字符
?:0个或1个字符
{n}:n个字符
{m,n}:m-n个字符
{n,}:至少n个字符
qq号:“\\d{5,10}”
- 复杂^和$匹配开头的结尾
- “^A\d{3}$” ——"A001" "A999"
- [...]可以匹配范围内的某一字符
- "[abc]1" ——“a1” “b1” “c1”
- “[a-f]” "a" "f"
- "[a-f0-9]{6}" 个数为6 可以匹配颜色
- "[a-f0-9_]{6}"
- [^...]可以匹配非范围内的字符
- "[^0-9]" "a"
- AB|DC可以匹配AB或CD
- “java|php” “java” “php”
- (AB|DC)进行匹配
- “learn\s(java|php)” "learn java" "learn php"
提取规则
使用Matcher.group(n)可以快速提取子串
- matcher.group(0) 表示匹配的整个字符串
- matcher.group(1) 表示匹配的第一个子串
- matcher.group(2) 表示匹配的第二个子串
- 正则表达式需要分组 使用(...)
正则表达式默认使用贪婪匹配 ,尽可能多的向后匹配
- 使用?实现非贪婪匹配(尽可能少的匹配)
- “^(\\d+?)(0*)$” 可以正确判断结尾有几个0 如123000 matcher.group(1)=“123” matcher.group(2) =“000”
- “^(\\d??)(9*)$” 第一个?表示匹配0或1个字符 第二表示非贪婪匹配(尽可能少的匹配) 如9999 matcher.group(1)=“” matcher.group(2) =“9999”
- 使用正则表达式分割字符串
- String[] String.split(String regex)
- 搜索子串:
- Matcher.find()
- 可以使用正则表达式将表达式中的多个空格去除
- s.replaceAll("\\s+","");