標籤:java Regex
javaRegex學習記錄
Regex(regular expressions)是一種描述字串集的方法,它是以字串集中各字串的共有特徵為依據的。Regex可以用於搜尋、編輯或者是操作文本和資料。它超出了 Java 程式設計語言的標準文法,因此有必要去學習特定的文法來構建Regex。Regex的變化是複雜的,一旦你理解了它們是如何被構造的話,你就能解析或者構建任意的Regex了。
字元類
字元類 |
[abc] |
a, b 或 c(簡單類) |
[^abc] |
除 a, b 或 c 之外的任一字元(取反) |
[a-zA-Z] |
a 到 z,或 A 到 Z,包括(範圍) |
[a-d[m-p]] |
a 到 d,或 m 到 p:[a-dm-p](並集) |
[a-z&&[def]] |
d,e 或 f(交集) |
[a-z&&[^bc]] |
除 b 和 c 之外的 a 到 z 字元:[ad-z](差集) |
[a-z&&[^m-p]] |
a 到 z,並且不包括 m 到 p:[a-lq-z](差集) |
預定義字元類
預定義字元類 |
. |
任何字元(匹配或者不匹配行結束符) |
\d |
數字字元:[0-9] |
\D |
非數字字元:[^0-9] |
\s |
空白字元:[\t\n\x0B\f\r] |
\S |
非空白字元:[^\s] |
\w |
單詞字元:[a-zA-Z_0-9] |
\W |
非單詞字元:[^\w] |
詞量
量 詞 種 類 |
意 義 |
貪婪 |
勉強 |
侵佔 |
X? |
X?? |
X?+ |
匹配 X 零次或一次 |
X* |
X*? |
X*+ |
匹配 X 零次或多次 |
X+ |
X+? |
X++ |
匹配 X 一次或多次 |
X{n} |
X{n}? |
X{n}+ |
匹配 X n 次 |
X{n,} |
X{n,}? |
X{n,}+ |
匹配 X 至少 n 次 |
X{n,m} |
X{n,m}? |
X{n,m}+ |
匹配 X 至少 n 次,但不多於 m 次 |
邊界匹配器 |
^ |
行首 |
$ |
行尾 |
\b |
單詞邊界 |
\B |
非單詞邊界 |
\A |
輸入的開頭 |
\G |
上一個匹配的結尾 |
\Z |
輸入的結尾,僅用於最後的結束符(如果有的話) |
\z |
輸入的結尾 |
樣本:使用分組去檔案的副檔名
import java.util.regex.Matcher;
import java.util.regex.Pattern;
publicclass Foo {
publicstatic String testFoo(Stringsource){
//兩個分組
Pattern p = Pattern.compile("(\\w+).(.+)");
Matcher mat = p.matcher(source);
mat.find();
//列印分組數
System.out.println(mat.groupCount());
//返回第二個分組內容
returnmat.group(2);
}
publicstaticvoid main(String[]args) {
System.out.println(testFoo("User3.java"));
}
}
列印結果:
2
java
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
javaRegex學習記錄