java正则表达式
正则表达式基础
表达式 | 含义 |
---|---|
\g | 匹配不只一个 |
\i | 忽略大小写(与Pattern.CASE_INSENSITIVE一样) |
\d | 取一个整数,相当于[0-9] |
[\u4e00-\u9fa5] | 匹配中文 |
. | 匹配除了\r与\n的任意字符 ,一般与*联用 |
* | 匹配它紧跟着的 零个或者任意多个字符 |
x | y |
\s | 可以匹配\r与\n |
[a-z] | 字符范围,即匹配任意一个小写字母 |
+ | 匹配紧跟的字符一个或者多个 |
[^a-z] | 不匹配字母 |
java特有的
\
在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \d,而表示一个普通的反斜杠是 \\。
Matcher.find()
下面是方法的注释:
This method starts at the beginning of this matcher's region, or, if
a previous invocation of the method was successful and the matcher has
not since been reset, at the first character not matched by the previous match.
如果匹配成功,同时没有重置,那么将向后接着匹配,直到匹配结束。
while (matcher.find()) {
System.out.println(matcher.group());
}
group():表示取0组,这时不能使用group(数字),无法匹配成功,因为matcher没有重置,后面的组与最开始已经不一样了。