大家好我是抹茶忘蟹,今天給大家?guī)?lái)java的正則表達(dá)式的使用。
String類中的三個(gè)基本操作使用正則:
匹配:matches()
切割: split()
替換: replaceAll()
Matcher類中常用的方法:
boolean matches() //是否匹配成功
boolean find() //查找匹配的下一個(gè)子序列
int start() //返回以前匹配的初始索引
int end() //返回最后匹配字符之后的偏移量
Matcher reset() //重置匹配器
String group() //返回由以前匹配操作所匹配的輸入子序列
//利用replaceAll替換掉重復(fù)的字符
System.out.println("你你你你好好好啊".replaceAll("(.)\\1+","$1"));
//split使用正則的和replaceAll一樣
正則表達(dá)式的構(gòu)造摘要:
1.字符類
[abc] //a茂缚、b 或 c(簡(jiǎn)單類)
[^abc] //任何字符,除了 a、b 或 c(否定)
[a-zA-Z] //a 到 z 或 A 到 Z,兩頭的字母包括在內(nèi)(范圍)
[a-d[m-p]] //a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] //d嚎研、e 或 f(交集)
2.預(yù)定義字符類
. //任何字符
\d //數(shù)字:[0-9]
\D //非數(shù)字: [^0-9]
\s //空白字符:[ \t\n\x0B\f\r]
\S //非空白字符:[^\s]
\w //單詞字符:[a-zA-Z_0-9]
\W //非單詞字符:[^\w]
3.邊界匹配器
^ //行的開(kāi)頭
$ //行的結(jié)尾
\b //單詞邊界
\B //非單詞邊界
4.Greedy 數(shù)量詞
X? //X,一次或一次也沒(méi)有
X* //X课竣,零次或多次
X+ //X嘉赎,一次或多次
X{n} //X置媳,恰好 n 次
X{n,} //X于樟,至少 n 次
X{n,m} //X,至少 n 次拇囊,但是不超過(guò) m 次
Matcher匹配網(wǎng)頁(yè)資源Demo
public class Main
{
public static void main(String[] args)
{
String html = "<html>"+
"<body>"+
"<img src=\"http://fishdeep.ccxyr.top/lly/yunstream.php?filecode=a60925b303a60afdbcb862ab7d145d7f\"/>"+
"<img src=\"http://fishdeep.ccxyr.top/lly/yunstream.php?filecode=dd60ce810f05737421face90b7cc946d\"/>"+
"<video width=\"320\" height=\"240\" controls>"+
"<source src=\"http://fishdeep.ccxyr.top/llytest/re/video.mp4\")\" type=\"video/mp4\">"+
"</video></body>";
Matcher m = Pattern.compile("src=\"(.*?)\"").matcher(html);
while(m.find()){
System.out.println("http:"+m.group(1));
}
}
}