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

