正则表达式学习笔记

来源:互联网 发布:node.gs卸载 编辑:程序博客网 时间:2024/06/07 08:49
正则表达式(regex):符合一定规则的表达式,用来操作字符串。


从毕向东老师的java视频中整理出来的,详情查阅API


字符类:
[ abc ]: a或b或c之间任意一个字符
[ ^abc ]: 除了a、b、c的其他任意一个字符
[ a-zA-Z ]: a到z或A到Z之间任意一个字符
[ a-d [ m-p ] ]: a到d或m到p,等于[a-dm-p]
[ a-z&&[ bcd ] ]: b或c或d之间任意一个字符,交集
[ a-z&&[ ^bcd ] ]: 除了b、c、d的任意a到z之间的一个字符
[ a-z&&[ ^b-e ] ]: 除了b到e的任意a到z之间的一个字符


预定义字符类:
.任意字符

\d数字:[0-9] 

\D:非数字:[^0-9]

\s空白字符:[\t\n\x0B\f\r]

\S:非空白字符:[^\s]

\w单词字符:[a-zA-Z_0-9]

\W:非单词字符:[^\w]



数量词:
X?一次或一次没用
X*零次或多次
X+一次或多次
X{n}恰好n次
X{n,}至少n次
X{n,m}至少n次,但不超过m次


边界匹配器:

^行的开头

$: 行的结尾

\b单词边界 

\B非单词边界





1、匹配 

boolean matches(String regex)

共5到10位,必须是数字且第一位不能为0

regex = "[1-9][0-9]{4.9}"

 

2、切割 

String[ ] split(String regex) 得到的字符串数组不包括结尾空字符串

str = " a b c d e" 按空格切割,regex = " +"
str = "ab.bc.cd" 按 . 切割,regex = "\\."
str = "c:\\abc\\a.txt" 按 \\ 切割,regex = "\\\\"
str = "a1bb123ccc11d" 按叠词切割,regex = "(.)\\1+"  


.表示任意字符\.在正则表达式中转义,\\.在字符串中再转义
(.)([abc])表示组可以理解封装成一个对象,下标从1开始,用\n(n是组的编号) 的形式来获取,在外界用$n获取


3、替换 

String replaceAll(String regex, String newstr)

str = ”ab12bcd234na45b"把数字替换成#,regex = "[0-9]+“或"\\d+",newstr = ”#"

str = ”abbcccdddd"把叠词替换成单个字符,regex = "(.)\\1+",newstr = "$1"


4、获取拿到符合需求的字符串子串
String str = "ming tian jiu yao fang jia le";  
String regex = "\\b[a-z]{4}\\b"; //匹配规则,注意\b表示单词边界
Pattern p = Pattern.compile(regex); //把规则封装成Pattern对象
Matcher m = p.matcher(str); //创建操作str的匹配器
while(m.find()) {//查找匹配的下一个序列
System.out.println(m.group()); //返回匹配的序列内容 
//m.start   m.end   返回匹配的序列开始(包括)、结束(不包括)的偏移量
}
0 0