Java正則表達(dá)式的替換和分組功能
前言
這篇來學(xué)習(xí)正則表達(dá)式的替換和分組功能,替換很好理解,分組有點(diǎn)復(fù)雜,特別是如何寫有效的分組的正則表達(dá)式。這篇通過幾個(gè)練習(xí),簡(jiǎn)單了解下替換和分組功能。
1.替換功能
在String類有一個(gè)替換功能的方法,結(jié)合正則表達(dá)式去實(shí)現(xiàn)替換,下面是replaceAll()方法的舉例。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
String str = "wo1shi2zhong3guo4ren";
//需要替換得到 wo shi zhong guo ren
//寫一個(gè)正則,用空字符替換原字符串的任意數(shù)字
String regex = "\\d"; // \d表示任意數(shù)字
String target = str.replaceAll(regex, " ");
System.out.println(target);
}
}
2.分組功能
先來看看什么是分組,在API 中Pattern這個(gè)類介紹是這樣描述的:
捕獲組可以通過從左到右計(jì)算其開括號(hào)來編號(hào)。例如,在表達(dá)式 ((A)(B(C))) 中,存在四個(gè)這樣的組:
|
1 |
((A)(B(C))) |
|
2 |
(A) |
|
3 |
(B(C)) |
|
4 |
(C) |
我們可以根據(jù)數(shù)多少個(gè)左括號(hào)來確定有多少個(gè)組。
下面來代碼舉例分組的正則表達(dá)式用法。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
// 1疊詞:快快樂樂,高高高興興
// 判斷字符串是否是上面的疊詞規(guī)則
String regex = "(.)\\1(.)\\2"; // 這個(gè)正則表達(dá)式表示 快快樂樂這樣的疊詞
// 上面(.)表示一個(gè)分組,里面.表示任意字符,\\1表示組1又出現(xiàn)了一次,\\2表示組2又出現(xiàn)了一次
System.out.println("快快樂樂".matches(regex));
System.out.println("快樂快樂".matches(regex));
System.out.println("高高興興".matches(regex));
System.out.println("快樂樂樂".matches(regex));
}
}
那么如何寫“快樂快樂”這樣疊詞的正則表達(dá)式呢。這么去分析一下,字符串“快樂快樂”,可以認(rèn)為“快樂”這個(gè)組又出現(xiàn)了一次,結(jié)合上面代碼提到的知識(shí),我們應(yīng)該這樣寫。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
// 1疊詞:快樂快樂
String regex = "(..)\\1";
System.out.println("快快樂樂".matches(regex));
System.out.println("快樂快樂".matches(regex));
}
}
練習(xí)1:按照疊詞進(jìn)行切割
請(qǐng)按照疊詞進(jìn)行切割“sdqqfgkkkhjppppdk”
package regex;
public class Demo1_Split {
public static void main(String[] args) {
String st = "sdqqfgkkkhjppppkl";
String[] arr = st.split("(.)\\1+");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
輸出
sd
fg
hj
kl
總結(jié)
到此這篇關(guān)于Java正則表達(dá)式的替換和分組功能的文章就介紹到這了,更多相關(guān)Java正則的替換和分組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Netty學(xué)習(xí)教程之Netty與Marshalling結(jié)合發(fā)送對(duì)象
Netty是由JBOSS提供的一個(gè)Java開源框架,之前已經(jīng)給大家簡(jiǎn)單介紹了一些基礎(chǔ)與使用,下面這篇文章主要給大家介紹了關(guān)于Netty與Marshalling結(jié)合發(fā)送對(duì)象的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05
深入淺析springsecurity入門登錄授權(quán)
SpringSecurity為我們提供了基于注解的權(quán)限控制方案,這也是我們項(xiàng)目中主要采用的方式,我們可以使用注解去指定訪問對(duì)應(yīng)的資源所需的權(quán)限,這篇文章主要介紹了springsecurity入門登錄授權(quán),需要的朋友可以參考下2024-05-05
教你一步解決java.io.FileNotFoundException:找不到文件異常
這篇文章主要給大家介紹了關(guān)于如何一步解決java.io.FileNotFoundException:找不到文件異常的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
使用SpringBoot的CommandLineRunner遇到的坑及解決
這篇文章主要介紹了使用SpringBoot的CommandLineRunner遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Spring Security賬戶與密碼驗(yàn)證實(shí)現(xiàn)過程
這篇文章主要介紹了Spring Security賬戶與密碼驗(yàn)證實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-03-03

