正则表达式学习笔记
来源:互联网 发布: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之间的一个字符
预定义字符类:
. :任意字符
数量词:
X? :一次或一次没用
X* :零次或多次
X+ :一次或多次
X{n} :恰好n次
X{n,} :至少n次
X{n,m} :至少n次,但不超过m次
边界匹配器:
str = "ab.bc.cd" 按 . 切割,regex = "\\."
str = "c:\\abc\\a.txt" 按 \\ 切割,regex = "\\\\"
str = "a1bb123ccc11d" 按叠词切割,regex = "(.)\\1+"
.表示任意字符 ,\.在正则表达式中转义,\\.在字符串中再转义
(.)([abc])表示组可以理解封装成一个对象,下标从1开始,用\n(n是组的编号) 的形式来获取,在外界用$n获取
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 返回匹配的序列开始(包括)、结束(不包括)的偏移量
}
从毕向东老师的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"
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
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- 学习正则表达式笔记
- 正则表达式学习笔记
- 学习正则表达式笔记
- 正则表达式学习笔记
- 正则表达式学习笔记
- POJ2586
- 我的每日时间管理
- 提高效率必须改掉的习惯
- 黑马程序员-窗体属性
- B+树与B*树小结
- 正则表达式学习笔记
- Maven学习问题解决
- 如何保管您的比特币
- 网站文本编辑器CKeditor的使用与配置
- AFNetworking 2.x 设置header
- CakePHP不支持path/to路径,前后台无法方法
- Android自定义控件(三)继承控件
- Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试
- 题目1387:斐波那契数列