正則表達(dá)式用于指定字符串的模式,你可以任何需要定位使用匹配某種特定模式的字符串的情況下使用正則表達(dá)式
jdk1.4推出java.util.regex包,就為我們提供了很好的JAVA正則表達(dá)式應(yīng)用平臺(tái)。
先舉些入門的概念
// 反斜杠
/t 間隔 ('/u0009')
/n 換行 ('/u000A')
/r 回車 ('/u000D')
/d 數(shù)字 等價(jià)于[0-9]
/D 非數(shù)字 等價(jià)于[^0-9]
/s 空白符號(hào) [/t/n/x0B/f/r]
/S 非空白符號(hào) [^/t/n/x0B/f/r]
/w 單獨(dú)字符 [a-zA-Z_0-9]
/W 非單獨(dú)字符 [^a-zA-Z_0-9]
/f 換頁(yè)符
/e Escape
/b 一個(gè)單詞的邊界
/B 一個(gè)非單詞的邊界
/G 前一個(gè)匹配的結(jié)束
^為限制開(kāi)頭
^java ??? 條件限制為以Java為開(kāi)頭字符
$為限制結(jié)尾
java$ ??? 條件限制為以java為結(jié)尾字符
.? 條件限制除/n以外任意一個(gè)單獨(dú)字符
java.. ??? 條件限制為java后除換行外任意兩個(gè)字符
加入特定限制條件「[]」
[a-z] ??? 條件限制在小寫a to z范圍中一個(gè)字符
[A-Z] ??? 條件限制在大寫A to Z范圍中一個(gè)字符
[a-zA-Z] 條件限制在小寫a to z或大寫A to Z范圍中一個(gè)字符
[0-9] ??? 條件限制在小寫0 to 9范圍中一個(gè)字符
[0-9a-z] 條件限制在小寫0 to 9或a to z范圍中一個(gè)字符
[0-9[a-z]] 條件限制在小寫0 to 9或a to z范圍中一個(gè)字符(交集)
[]中加入^后加再次限制條件「[^]」
[^a-z] ??? 條件限制在非小寫a to z范圍中一個(gè)字符
[^A-Z] ??? 條件限制在非大寫A to Z范圍中一個(gè)字符
[^a-zA-Z] 條件限制在非小寫a to z或大寫A to Z范圍中一個(gè)字符
[^0-9] ??? 條件限制在非小寫0 to 9范圍中一個(gè)字符
[^0-9a-z] 條件限制在非小寫0 to 9或a to z范圍中一個(gè)字符
[^0-9[a-z]] 條件限制在非小寫0 to 9或a to z范圍中一個(gè)字符(交集)
在限制條件為特定字符出現(xiàn)0次以上時(shí),可以使用「*」
J* ??? 0個(gè)以上J
.* ??? 0個(gè)以上任意字符
J.*D ??? J與D之間0個(gè)以上任意字符
在限制條件為特定字符出現(xiàn)1次以上時(shí),可以使用「+」
J+ ??? 1個(gè)以上J
.+ ??? 1個(gè)以上任意字符
J.+D ??? J與D之間1個(gè)以上任意字符
在限制條件為特定字符出現(xiàn)有0或1次以上時(shí),可以使用「?」
JA? ??? J或者JA出現(xiàn)
限制為連續(xù)出現(xiàn)指定次數(shù)字符「{a}」
J{2} ??? JJ
J{3} ??? JJJ
文字a個(gè)以上,并且「{a,}」
J{3,} ??? JJJ,JJJJ,JJJJJ,???(3次以上J并存)
文字個(gè)以上,b個(gè)以下「{a,b}」
J{3,5} ??? JJJ或JJJJ或JJJJJ
兩者取一「|」
J|A ??? J或A
Java|Hello ??? Java或Hello
在regex包中,包括了兩個(gè)類,Pattern(模式類)和Matcher(匹配器類)。Pattern類是用來(lái)表達(dá)和陳述所要搜索模式的對(duì)象,Matcher類是真正影響搜索的對(duì)象。另加一個(gè)新的例外類,PatternSyntaxException,當(dāng)遇到不合法的搜索模式時(shí),會(huì)拋出例外。
比如,在字符串包含驗(yàn)證時(shí)
//查找以Java開(kāi)頭,任意結(jié)尾的字符串
Pattern pattern = Pattern.compile("^Java.*");
Matcher matcher = pattern.matcher("Java不是人");
boolean b= matcher.matches();
//當(dāng)條件滿足時(shí),將返回true,否則返回false
除了matchs()方法//matchs()方法得完全匹配上才會(huì)返回true
還有以下這些常用的方法
boolean find() //只要字符串中包含需要匹配的字符串模式,就返回true
int start() //返回找到字符串第一個(gè)字符的索引
int end() //返回找到字符串最后個(gè)字符的索引
int start(int groupIndex) //返回找到字符串第一個(gè)字符的索引,參數(shù)表明第幾個(gè)匹配到的字符串,如果只有一個(gè)不用參數(shù)
int end(int groupIndex) //返回找到字符串最后個(gè)字符的索引,參數(shù)表明第幾個(gè)匹配到的字符串,如果只有一個(gè)不用參數(shù)
String group(int groupIndex) //可能會(huì)匹配到多個(gè)字符串,參數(shù)groupIndex表示第幾個(gè)匹配到的字符串,然后返回該字符串
String replaceAll(String replacement) //用replacement替換所有匹配到的字符串
下面舉個(gè)例子說(shuō)明
查找網(wǎng)址url

這是運(yùn)行結(jié)果
將所有匹配到的網(wǎng)址打印出來(lái)
