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沒有重置,後面的組與最開始已經不一樣了。