Regex在處理字串的效率上是相當高的
關於Regex的使用,更多的是自己的經驗,有興趣可以參閱相關書籍
這裡主要寫一下java中的正則操作方法
執行個體1:匹配
import java.util.Scanner;class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //擷取輸入 System.out.print("Please Enter:"); String str = sc.nextLine(); check(str); } private static void check(String str) { //匹配第一位是1-9,第二位及以後0-9(個數在4-10之間) String regex = "[1-9][0-9]{4,10}"; /* //匹配單個字元是大小寫a-z String regex = "[a-zA-Z]"; //匹配數字,注意逸出字元 String regex = "\\d"; //匹配非數字 String regex = "\\D"; */ if(str.matches(regex)) { System.out.println("匹配成功"); } else { System.out.println("匹配失敗"); } }}
此處String類中的matches()方法用於匹配
執行個體2:切割
import java.util.Scanner;class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Please Enter:"); String str = sc.nextLine(); split(str); } private static void split(String str) { //匹配一個或多個空格 String regex = " +"; String[] arr = str.split(regex); for (String s : arr) { System.out.println(s); } }}
此處String類中的split()方法用於按Regex切割,返回一個String數組
執行個體3:替換
import java.util.Scanner;class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Please Enter:"); String str = sc.nextLine(); replace(str); } private static void replace(String str) { //匹配疊詞 String regex = "(.)\\1+"; String s = str.replaceAll(regex, "*"); System.out.println(s); }}
注意replaceAll有兩個參數,一個是正則,一個是替換的字元