Java如何使用正則表達(dá)式查找指定字符串
對(duì)于一個(gè)文件名的使用經(jīng)常要做一些判斷,比如文件名是否是指定的名字,或者文件是否為指定的類型,或者篩選出以指定后綴結(jié)尾的文件名,等等
這時(shí)就可以提取出文件名的字符串進(jìn)行比較判斷篩選
在java中的String類的一些常用方法中給出了這些工具方法,比如判斷兩個(gè)字符串是否一致,字符串是否以指定的前綴開(kāi)始,字符串是否以指定的后綴結(jié)束等等方法
這里用到的java中的String類的常用方法
boolean equals(Object obj):比較字符串是否相同
boolean endWith(String str):測(cè)定字符串是否以指定的后綴結(jié)束
通過(guò)這兩個(gè)方法進(jìn)行篩選
String par1 = “params.txt”;
String par2 = “_depth.dep”;
String par3 = “_GRD.grd”;
String par4 = “_cs.dep”;
String par5 = “_Tide.txt”;
String par6 = “Jonswap.txt”;
判斷文件名是否為params.txt,Jonswap.txt,或者以指定的后綴_depth.dep,_GRD.grd,_cs.dep,_Tide.txt結(jié)尾的文件
public class FileTest { public static void main(String[] args) { String par1 = "params.txt"; String par2 = "_depth.dep"; String par3 = "_GRD.grd"; String par4 = "_cs.dep"; String par5 = "_Tide.txt"; String par6 = "Jonswap.txt"; while(true) { Scanner scanner = new Scanner(System.in); System.out.println("please pressure a filename:"); String next = scanner.next(); if ("exit".equals(next)){ break; }else if(par1.equals(next) || par2.endsWith(next) || par3.endsWith(next) || par4.endsWith(next) || par5.endsWith(next) || par6.equals(next)) { System.out.println("找到了你輸入的文件:" + next); }else{ System.out.println("沒(méi)有找到!"); } } } }
以上代碼雖然可以正常運(yùn)行輸出,但是它不僅匹配了后綴,只要是最后一個(gè)字母一樣的它都可以匹配上,所以多多少少有一點(diǎn)bug,這里的解決方法是使用正則表達(dá)式的方法,在java中的String類中也提供了使用正則表達(dá)式匹配的方法
boolean mathes(String regex):告知此字符串是否匹配給指定的正則表達(dá)式
首先了解必須的正則表達(dá)式原則
** . :通配所有的字符**
** * :匹配0次或者多次前面出現(xiàn)的正則表達(dá)式**
** + :匹配1次或者多次前面出現(xiàn)的正則表達(dá)式**
** ?:匹配0次或者1次前面出現(xiàn)的正則表達(dá)式**
** re1 | re2 :匹配正則表達(dá)式re1或者re2**
所以在制定后綴的正則表達(dá)式寫法:
.*_cs//.dep
上面代碼就是匹配后綴為_(kāi)cs.dep,前面可以有內(nèi)容,也可以沒(méi)有內(nèi)容的文件名
.*_cs//.dep|.*_GRD.grd
上面代碼就是匹配兩個(gè)正則表達(dá)式,或者re1或者re2
了解了這兩個(gè)寫法之后,就可以進(jìn)行匹配了:
public class RegexTest2 { public static void main(String[] args) { String regex = ".*_GRD\\.grd|.*_cs\\.dep|.*_depth\\.dep|" + ".*_Tide\\.txt|params\\.txt|Jonswap\\.txt"; while(true){ Scanner scanner = new Scanner(System.in); System.out.print("please preesure a fileName:"); String next = scanner.next(); if (next.matches(regex)){ System.out.println("找到了:" + next); }else if("exit".equals(next)){ System.out.println("byebye..."); break; }else{ System.out.println("沒(méi)有找到!"); } } } }
以上就完成了!
總結(jié)
到此這篇關(guān)于Java如何使用正則表達(dá)式查找指定字符串的文章就介紹到這了,更多相關(guān)Java查找指定字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis詳細(xì)對(duì)比一級(jí)緩存與二級(jí)緩存
MyBatis 包含一個(gè)非常強(qiáng)大的查詢緩存特性,它可以非常方便地配置和定制,緩存可以極大的提升查詢效率。MyBatis中默認(rèn)定義了兩級(jí)緩存,分別是一級(jí)緩存和二級(jí)緩存2022-10-10Java實(shí)現(xiàn)Fibonacci(斐波那契)取余的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)Fibonacci取余的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03詳解spring中使用solr的代碼實(shí)現(xiàn)
本篇文章主要介紹了詳解spring中使用solr的代碼實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析
這篇文章主要為大家介紹了生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Java數(shù)據(jù)結(jié)構(gòu)之HashMap源碼深入分析
Java HashMap是一種基于哈希表實(shí)現(xiàn)的鍵值對(duì)存儲(chǔ)結(jié)構(gòu),可以實(shí)現(xiàn)快速的數(shù)據(jù)查找和存儲(chǔ)。它是線程不安全的,但在單線程環(huán)境中運(yùn)行效率高,被廣泛應(yīng)用于Java開(kāi)發(fā)中2023-04-04java使用webuploader實(shí)現(xiàn)跨域上傳詳解
目前初步接觸JAVA圖片上傳,用的webuploader。已經(jīng)跟后臺(tái)對(duì)接上,但是有個(gè)問(wèn)題就是跨域請(qǐng)求,通過(guò)查找相關(guān)資料終于實(shí)現(xiàn)了,下面這篇文章主要給大家介紹了關(guān)于java使用webuploader實(shí)現(xiàn)跨域上傳的相關(guān)資料,需要的朋友可以參考下。2017-07-07Mybatis中resultMap的Colum和property屬性詳解
這篇文章主要介紹了Mybatis中resultMap的Colum和property屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01Java+element實(shí)現(xiàn)excel的導(dǎo)入和導(dǎo)出
本文主要介紹了Java+element實(shí)現(xiàn)excel的導(dǎo)入和導(dǎo)出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Java使用Gateway自定義負(fù)載均衡過(guò)濾器
這篇文章主要介紹了Java使用Gateway自定義負(fù)載均衡過(guò)濾器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07