一.Java中的正则表达式的一些特点
1.java中 \ 表示正则表达式,所以^d+(.d+)?,可以匹配的实例:"5", "1.5" 和 "2.21"。但在程序中要写成 ^\d+(\.\d+)?
2.普通的反斜线表示为:\\
二.String内建的正则表达式功能
1.boolean matches(String regex) 检验这个字符串是否匹配给定的regex(正则表达式)
例:
System.out.println( "+911".matches("-|\+)?\d+) ) //true
2. String[] split(String regex) 字符串分割
String[] split(String regex, int limit)
3.替换
String replaceFirst(String regex,String replacement)
String replaceAll(String regex,String replacement)
三.Pattern和Matcher
Pattern:模式 Matcher:匹配器(引擎)
习惯用法:
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
得到Matcher对象后,使用Matcher上的方法,我们能够判断各种不同类型的匹配是否成功
boolean matches() boolean lookingAt() boolean find() boolean find(int start) int start() int end()
四.正则表达式语法
字符
| B | 指定字符B |
| xhh | 十六进制值为oxhh的字符 |
| uhhhh | 十六进制表示为oxhhhh的Unicode字符 |
| 制表符Tab | |
| 换行符 | |
| 回车 | |
| f | 换页 |
| e | 转义(Escape) |
字符类
| . | 任意字符 |
| [abc] | 包含a,b和c的任何字符(和a|b|c作用相同) |
| [^abc] | 除了a,b和c之外的任何字符(否定) |
| [a-zA-Z] | 从a到z或从A到Z的任何字符(范围) |
| [abc[hij]] | 任意a,b,c,h,i和j字符(与a|b|c|h|i|j作用相同)(合并) |
| [a-z&&[hij]] | 任意h,i或j(交) |
| s | 空白符(空格,tab,换行,换页和回车) |
| S | 非空白符([^s]) |
| d | 数字[0-9] |
| D | 非数字[^0-9] |
| w | 单词字符[a-zA-Z0-9_] |
| W | 非单词字符[a-zA-Z0-9_] |
逻辑操作符
| XY | Y跟在X后面 |
| X|Y | X或Y |
| (X) | 捕获组(capturing group) 可以在表达式中用i引用第i个捕获组 |
边界匹配符
| ^ | 一行的起始 |
| $ | 一行的结束 |
| 词的边界 | |
| B | 非词的边界 |
| G | 前一个匹配的结束 |
量词
| 贪婪模式 | 饥饿模式 | 独占模式 | |
| X? | X?? | X?+ | 匹配0或1次 |
| X* | X*? | X*+ | 匹配0或多次 |
| X+ | X+? | X++ | 匹配1或多次 |
| X{n} | X{n}? | X{n}+ | 匹配n次 |
| X{n,} | X{n,}? | X{n,}+ | 匹配最少n次 |
| X{n, m} | X{n, m}? | X{n, m}+ | 匹配最少n次,最多m次 |