Java提取文本文档中的所有网址(小案例介绍正则基础知识)
生活随笔
收集整理的這篇文章主要介紹了
Java提取文本文档中的所有网址(小案例介绍正则基础知识)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正則表達式基礎以及Java中使用正則查找
定義: 正則表達式是一些用來匹配和處理文本的字符串
正則的基礎(先大致了解下)
1. 正則表達式的作用
查找特定的信息(搜索)
替換一些文本(替換)
2. 正則基礎知識
1. 元字符
- . 匹配除換行符(\n)以外的任何單個字符
- w 匹配字母、數字、下劃線、漢字
- s 匹配任意空白字符(包括空格、制表符、換頁符等)
- d 匹配數字,匹配單詞的開始或結束
- ^ 匹配字符串的開始
- $ 匹配字符串的結束
例子:
#匹配abc開頭的字符串 ^abd#匹配8位數字的QQ號 ^dddddddd$#匹配以153開頭的11位數字手機號 ^153dddddddd$2. 重復限定符
- * 重復0次或更多次
- + 重復1次或更多次
- ? 重復0次或1次
- {n} 重復n次
- {n,} 重復n次或更多次
- {n,m} 重復n到m次
3. 分組
#匹配字符串中包含0到多個ab開頭 ^(ab)*$4. 條件或
正則用【|】表示或,當滿足分支里任何一種條件時,就會匹配成功
#匹配手機號中聯通的手機(聯通號段130/131/132等) ^(130|131|132)d{8}$5. 區間
正則提供‘[]’表示區間條件
- [0-9] 限定0到9
- [a-z] 限定a-z
- [165] 限定某些數字
Java中使用正則表達式
這里會說一個例子:在一段txt文檔中找出所有的網址
Java與正則
1. 這里有一段100000000(自己數,我也不知道幾個0)行的文本,如圖
2. 高手寫好的匹配url的正則(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]當然還有n多種方式
3. Java代碼獻上
正則表達式匹配使用方式
/*** 參數1 regex:我們的正則字符串* 參數2 就是一大段文本,這里用data表示*/ private String filterSpecialStr(String regex, String data) {//sb存放正則匹配的結果StringBuffer sb = new StringBuffer();//編譯正則字符串Pattern p = Pattern.compile(regex);//利用正則去匹配Matcher matcher = p.matcher(data);//如果找到了我們正則里要的東西while (matcher.find()) {//保存到sb中,"\r\n"表示找到一個放一行,就是換行sb.append(matcher.group() + "\r\n");}return sb.toString(); }4. 這里增加兩個文件的讀寫
Java讀取文本文件
private String readFile(String pathName) {//讀取到的文件內容放到這個sb里StringBuffer sb = new StringBuffer();//The Java 7 try-with-resources syntax (Automatic Resource Management) is nice (這種寫法是Java7的一種語法,自動管理資源,不理解自行百度)try (BufferedReader br = new BufferedReader(new FileReader(pathName))) {String line;while ((line = br.readLine()) != null) {sb.append(line + "\r\n");}System.out.println("讀取文件完成");} catch (IOException e) {e.printStackTrace();}return sb.toString();}Java寫入文本文件
private void writeFile(String pathName, String data) {try {//文件不存在的話新建,存在覆蓋File file = new File(pathName);file.createNewFile();//The Java 7 try-with-resources syntax (Automatic Resource Management) is nicetry (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {bw.write(data);bw.flush();System.out.println("文件寫入完成");} catch (IOException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();} }5. 執行結果
測試代碼
把文檔.txt讀取到Java中,然后處理完,最后寫到我指定的文件中
public static void main(String[] args) {//0. 準備好正則String regex = "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";//1. 讀取文檔String data = readFile("F:\\test\\文檔.txt");//2. 正則查找String needData = filterSpecialStr(regex, data);//3. 寫到某個文件中writeFile("F:\\test\\needData.txt", needData); }結果
轉載于:https://www.cnblogs.com/baijinqiang/p/11067033.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java提取文本文档中的所有网址(小案例介绍正则基础知识)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IT外包概要
- 下一篇: Java反编译器Java Decompi