正則表達式是一種專門用于對字符串的操作的規則。
1.在String類中就有一些方法是對字符串進行匹配,切割。
判斷字符串是否與給出的正則表達式匹配的:boolean matches( String regex);
按照給定的正則表達式對字符串進行切割的:String[] split(String regex);
將符合正則表達式的字符串替換成我們想要的其他字符串:String replaceAll(String regex,String replacement)
2.下面介紹一下正則表達式常用的用法
(1)
這個正則表達式的意思 是:第一個數字應該是1-9中任意的一個,然后緊接著就必須要出現0-9中的數字中的一種,而且這種數字至少要出現4次,至多出現15次
如:
10175 符合
10不符合,因為[0-9]{4,15},至少要出現4次以上,在這里只出現了一次
(2)
[a-zA-Z0-9_]{6}表示恰好要出現6次a-z或A-Z或_ 中的字符
+表示至少出現一次
*表示出現0次或多次
?表示出現一次或0次
(3)根據正則表達式來切割字符串
String regex="http://.";
因為/ 也是特殊符號,所以要兩個//來表示。當我們想要使用普通的 / 時,那么就要用////來表示才可。
String[] ss=str.split(regex); 返回字符串數組: "sjd" "ksdj" "skdjf" 實現 了對原有字符串的切割
(4)根據正則表達式來替換掉我們想要替換的東西
將字符串中所有連續出現5個或以上的數字串替換成#
String regex="[0-9]{5,}";
String newstr=str.replaceAll(regex,"#");
(5)獲取符合正則表達式規則的字符串
Matcher m=p.matcher(String str);
while(m.find())
{
System.out.println(m.group());
}
3.網頁爬蟲的制作
我們制作 一個可以將一個網頁中的全部的郵箱讀取出,并且存放在一個文本文件中。
從網絡中獲取郵箱地址
*/
import java.io.*;
import java.util.regex.*;
import java.net.*;
class MailTest
{
public static void main(String[] args) throws Exception
{
getMailAddr();
}
public static void getMailAddr()throws Exception
{
URL url=new URL("http://bbs.VeVB.COm/topics/390148495");
URLConnection con=url.openConnection();
BufferedReader bufIn=new BufferedReader(new InputStreamReader(con.getInputStream()));
BufferedWriter bufw=new BufferedWriter(new FileWriter(new File("e://mailaddress.txt")));
String str=null;
String regex="[a-zA-Z0-9_]{6,12}@[a-zA-Z0-9]+(//.[a-zA-Z]+)+";
Pattern p=Pattern.compile(regex);
while((str=bufIn.readLine())!=null)
{
Matcher m=p.matcher(str);
while(m.find())
{
String ss=m.group();
bufw.write(ss,0,ss.length());
bufw.newLine();
bufw.flush();
}
}
}
}
新聞熱點
疑難解答