java正則匹配讀取txt文件提取特定開頭和結(jié)尾的字符串
前言
前天剛?cè)肼毜乃惴ㄍ拢^(guò)來(lái)問(wèn)我怎么提取txt文件中的數(shù)據(jù),我一看這還不簡(jiǎn)單,結(jié)果…搞了好久。
正則不用真的會(huì)忘記,寫篇博客增加一下記憶吧。
需求:提取txt文件中,有特定開頭(雙引號(hào)) ,特定結(jié)尾(雙引號(hào)) 的中間的數(shù)據(jù),打印出來(lái)
一、使用FileInputStream處理
FileInputStream:是java中的字節(jié)輸入流,就是通過(guò)字節(jié)的形式進(jìn)行讀取
構(gòu)造方法 可以通過(guò)傳遞指定打開文件的路徑字符串,來(lái)創(chuàng)建FileInputStrem對(duì)象
new FileInputStrem("文件路徑")
InputStremReader 是連接字節(jié)流和字符流之間的橋梁,我們通過(guò) new InputStremReader() 的構(gòu)造方法,傳遞一個(gè)FileInputStrem對(duì)象,和一個(gè)編碼格式,這個(gè)編碼格式具體根據(jù)你要讀取文件的編碼格式
InputStreamReader(file,"UTF-8");
編碼格式可以打開txt文件在右下角查看
// 這里利用了一下小技巧就是 我這個(gè)同事給我的文件 每個(gè)要提取的數(shù)據(jù)都在同一行內(nèi),所以可以通過(guò)每行讀取。
while ((line = br.readLine()) != null) { System.out.println(getPatternCode(line,rgex)); }
二、使用正則開始匹配
1.匹配規(guī)則書寫
正則表達(dá)式匹配規(guī)則 這里是以 (ox) 開始 以“ 結(jié)尾
這里的第一對(duì)括號(hào)防止防止轉(zhuǎn)義 所以加了\
然后()表示一個(gè)子表達(dá)式的開始和結(jié)尾 要匹配這兩個(gè)字符的話 就用上面的\
.表示匹配任意
*表示匹配任意多個(gè)
\” 表示匹配最后字符
這里的規(guī)則大概就是這樣,可以根據(jù)需要自己匹配
String rgex = "\\(0x\\)(.*?)\"";
2.pattern
pattern是正則表達(dá)式的編譯形式 匹配的模式
Pattern.compile 是獲取Pattern實(shí)例,Pattern的構(gòu)造器是私有的,只能通過(guò)compile方法獲取
Pattern pattern = Pattern.compile(rgex);
matcher類也是私有的,只能通過(guò)pattern.matcher來(lái)創(chuàng)建,
構(gòu)造方法傳遞一個(gè)參數(shù)時(shí),返回一個(gè)matcher實(shí)例,是匹配上的字符串
構(gòu)造方法傳遞兩個(gè)參數(shù)時(shí),返回一個(gè)boolean值,表示是否匹配上指定的字符串
Matcher m = pattern.matcher(string);
m.find() 是部分匹配,
從給定的字符串開始匹配,第一次匹配到之后 如果沒(méi)有重置,則會(huì)從上次匹配到的最后一個(gè)字符的下一位開始往后匹配
匹配成功后會(huì)返回 true
m.find()
m.group() 是返回匹配的數(shù)據(jù)
group(0) 是返回原始匹配的數(shù)據(jù)
group(1) 是返回第一次匹配到的數(shù)據(jù)
m.group(1);
代碼案例
package fileOperation; import java.io.*; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @program: solution * @description: 讀取文件 利用正則表達(dá)式篩選數(shù)據(jù) * @author: Wang Hai Xin * @create: 2022-10-24 18:52 **/ public class txtFiltration { public static void main(String[] args) throws IOException { /**/ FileInputStream file = new FileInputStream("C:\\project\\solution\\src\\main\\java\\fileOperation\\djk-Log 2022-10-21 17_48_06.txt"); /*指定文件類型*/ InputStreamReader isr = new InputStreamReader(file, "UTF-8"); BufferedReader br = new BufferedReader(isr); /*匹配規(guī)則*/ String rgex = "\\(0x\\)(.*?)\""; String line = null; while ((line = br.readLine()) != null) { System.out.println(getPatternCode(line,rgex)); } } public static String getPatternCode(String string, String rgex){ // 匹配的模式 Pattern pattern = Pattern.compile(rgex); Matcher m = pattern.matcher(string); while (m.find()) { return m.group(1); } return null; } }
效果展示,直接將結(jié)果從控制臺(tái)復(fù)制使用即可
注意:控制臺(tái)展示的數(shù)目有限,如果出現(xiàn)前半部分丟失, 可能是控制臺(tái)展示的數(shù)據(jù)達(dá)到上限,可以通過(guò)輸出到指定文件或者exel文件中
總結(jié)
到此這篇關(guān)于java正則匹配讀取txt文件提取特定開頭和結(jié)尾的字符串的文章就介紹到這了,更多相關(guān)java提取txt文件中指定內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java嵌入式開發(fā)的優(yōu)勢(shì)及有點(diǎn)總結(jié)
在本篇內(nèi)容里小編給大家整理了關(guān)于Java嵌入式開發(fā)的優(yōu)勢(shì)及相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2022-11-11Java微信二次開發(fā)(三) Java微信各類型消息封裝
這篇文章主要為大家詳細(xì)介紹了Java微信二次開發(fā)第三篇,Java微信各類型消息封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例
本篇文章主要介紹了Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03淺析SpringCloud Alibaba-Nacos 作為注冊(cè)中心示例代碼
這篇文章主要介紹了SpringCloud Alibaba-Nacos 作為注冊(cè)中心示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10解析MapStruct轉(zhuǎn)換javaBean時(shí)出現(xiàn)的詭異事件
在項(xiàng)目中用到了MapStruct,對(duì)其可以轉(zhuǎn)換JavaBean特別好奇,今天小編給大家分享一個(gè)demo給大家講解MapStruct轉(zhuǎn)換javaBean時(shí)出現(xiàn)的詭異事件,感興趣的朋友一起看看吧2021-09-09Intellj?idea新建的java源文件夾不是藍(lán)色的圖文解決辦法
idea打開java項(xiàng)目后新建的模塊中,java文件夾需要變成藍(lán)色,這篇文章主要給大家介紹了關(guān)于Intellj?idea新建的java源文件夾不是藍(lán)色的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02Java修改maven的默認(rèn)jdk版本為1.7的方法
這篇文章主要介紹了Java修改maven的默認(rèn)jdk版本為1.7的方法,需要的朋友可以參考下2018-02-02IntelliJ IDEA maven 構(gòu)建簡(jiǎn)單springmvc項(xiàng)目(圖文教程)
在工作當(dāng)中,我們有時(shí)需要?jiǎng)?chuàng)建一個(gè)全新的工程,而基于spring-mvc web的工程較為常見,這篇文章主要介紹了IntelliJ IDEA maven 構(gòu)建簡(jiǎn)單springmvc項(xiàng)目(圖文教程),感興趣的小伙伴們可以參考一下2018-05-05