一.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次 |