我們開發(fā)過程中,經(jīng)常用到正則表達式來匹配想要的字符串,或者從一段文本中提取想要的關(guān)鍵字,比如爬蟲應(yīng)用等。正則表達式是對字符串提取的一套規(guī)則,我們把這個規(guī)則用正則里面的特定語法表達出來,去匹配滿足這個規(guī)則的字符串。正則表達式具有通用型,不僅java里面可以用,其他的語言也一樣適用。
1. 正則表達式基本字符
2. Java正則常用類Pattern類與Matcher類
Pattern類用于創(chuàng)建一個正則表達式,也可以說創(chuàng)建一個匹配模式:
Pattren p = Pattren.compile(“\d+”);
Matcher不能隨意創(chuàng)建,只能通過Pattern.matcher(CharSequence input)方法得到該類的實例。
Matcher m=p.matcher(“4352”);
m.matches();
3. 匹配aabb、abab格式字符串
看到aabb、abab這類格式的字符串會讓人想起學過的成語,比如:急急忙忙,坑坑洼洼,風風火火,彼此彼此,動次動次,哇涼哇涼。
那么我們就來通過正則表達式來匹配這一類的字符串。
//匹配aabb類型字符串
Pattern p = Pattern.compile("^(.)\\1(.)\\2$");
Matcher m=p.matcher("急急忙忙");
System.out.println("匹配aabb類型字符串:急急忙忙 "+ m.matches());
//匹配abab類型字符串
p = Pattern.compile("^(.)(.)\\1\\2$");
m=p.matcher("彼此彼此");
System.out.println("匹配abab類型字符串:彼此彼此 "+ m.matches());
解釋一下,首先“^”和“$”大家都比較熟悉,表示開頭和結(jié)尾。
那么“(.)”代表什么含義呢?“.”表示匹配任意字符,“(.)”表示匹配任意字符的一個分組,如果出現(xiàn)多個括號,就有多個分組,“\1”表示引用第一個分組,“\2”引用第二個分組,依次類推。所以,“^(.)\1(.)\2$” 這個表達式表示的意思就是,第一個字符出現(xiàn)后,在第二個位置又被引用,也就是第一和第二位置的字符一樣,同樣,“(.)\2” 就是第二個分組的字符也被再引用一次,這樣就能匹配"aabb"格式的字符串了。
接下來,如果要匹配"abac"這種類型的字符串呢,比如:“相親相愛,繪聲繪色,不吐不快” 這一類型的成語,與上面類似,實現(xiàn)代碼如下:
//匹配abac類型字符串
p = Pattern.compile("^(.).\\1.$");
m=p.matcher("相親相愛");
System.out.println("匹配abac類型字符串:相親相愛 "+ m.matches());
是不是很簡單,希望大家自己多練習,這樣就可以輕松掌握這一類正則表達式的匹配方法了。文章來源:http://www.zghlxwxcb.cn/news/detail-421496.html
更多技術(shù)資源、軟件開發(fā)工具,歡迎訪問【昂焱數(shù)據(jù)】,這里一定有驚喜等著你!文章來源地址http://www.zghlxwxcb.cn/news/detail-421496.html
到了這里,關(guān)于Java正則表達式匹配aabb、abab格式字符的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!