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个字符

Java正则表达式
Java正则表达式

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"
Java正则表达式
 提取规则
使用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+","");