一.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字符 |
| \t | 制表符Tab |
| \n | 换行符 |
| \r | 回车 |
| \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 | 词的边界 |
| \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次 |