【java】正規表示式
一、正規表示式
- 是指一個用來描述或者匹配一系列符合某個語法規則的字串的單個字串。其實就是一種規則。有自己特殊的應用。
- 作用:比如註冊郵箱,郵箱有使用者名稱和密碼,一般會對其限制長度,這個限制長度的事情就是正規表示式做的
- 正規表示式也是一個字串
- String類有個方法matches()方法,是專門用於檢驗字串是否符合正規表示式的規則
String regex = "[1-9]\\d{4,14}";
System.out.println("565899885956".matches(regex));
二、字元類演示
1、字元類
- []:表示單個字元
- [abc] a、b 或 c(簡單類):包含中括號裡的任一字元
- [^abc] 任何字元,除了 a、b 或 c(否定):不包含中括號裡的任一字元
- [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(範圍):包含a到z或A-Z的任一字元(並集)
- [a-d[m-p]] a到d或者m-p(並集),相當於[a-dm-p]
- [a-z&&[def]] a-z和d,e,f 取交集
- [a-z&&[^def]] a-z和除了d,e,f 的取交集(減去)
- [a-z&&[^m-p]] a-z和除了m-p的取交集(減去)
- [0-9] 0到9的字元都包括:
注意:[]表示的單個字元,若字串中有多個字元,則flase。
2、預定義字元類
- . 任何字元(注意:單個字元。.. 代表任意兩個字元
- \d 數字:也就是[0-9],代表單個的數字字元
注意:\代表轉義字元,如果想表示\d的話,需要\\d
- \D 非數字:也就是[^0-9],除了0-9
- \s 空白字元:[ \t\n\x0B\f\r]:\t為tab鍵,\n為換行,\x0B為DOS中的垂直製表符,\f為DOS中的翻頁,\r為回車;
- \S 非空白字元:
- \w 單詞字元:[a-zA-Z_0-9]
3、Greedy 數量詞
- X? :X代表任意字元,?代表一次或一次也沒有
String regex1 = "[abc]?";
System.out.println( "a".matches(regex1));
- X* :X代表任意字元,*代表零次或多次
- X+ :X代表任意字元,+代表一次或多次
- X{n}: X代表任意字元,{n}代表恰好 n 次
- X{n,} :X代表任意字元,{n,}至少 n 次
- X{n,m}: X代表任意字元,{n,m}代表至少 n 次,但是不超過m 次
三、正規表示式的分割功能
String類的分割功能:public String[] split(Stringregex):根據給定正規表示式的匹配拆分此字串,返回一個字串陣列
public class Demo5_Split {
public static void main(String[] args) {
String s = "金三胖.郭美美.李dayone";
String[] arr = s.split("\\."); //通過正規表示式切割字串,空格即為空格,但是點需要進行轉義,單獨點代表任意字元,會把字串切碎。
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
四、正規表示式的替換功能
* String類的功能:publicString replaceAll(String regex,String replacement),根據指定的替換字串來替換正規表示式裡的字元,返回一個新的字串。
五、正規表示式的分組功能
* 捕獲組可以通過從左到右計算其開括號來編號。例如,在表示式 ((A)(B(C))) 中,存在四個這樣的組:
*
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
public class Demo7_Regex {
/**
* * A:正規表示式的分組功能
* 捕獲組可以通過從左到右計算其開括號來編號。例如,在表示式 ((A)(B(C))) 中,存在四個這樣的組:
*
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
組零始終代表整個表示式。
*/
public static void main(String[] args) {
//demo1();
//demo2();
/*
* 需求:我我....我...我.要...要要...要學....學學..學.編..編編.編.程.程.程..程
將字串還原成:“我要學程式設計”。
*/
String s = "我我....我...我.要...要要...要學....學學..學.編..編編.編.程.程.程..程";
String s2 = s.replaceAll("\\.+", "");
String s3 = s2.replaceAll("(.)\\1+", "$1"); //$1代表第一組中的內容
System.out.println(s3);
}
public static void demo2() {
//需求:請按照疊詞切割: "sdqqfgkkkhjppppkl";
String s = "sdqqfgkkkhjppppkl";
String regex = "(.)\\1+"; //+代表第一組出現一次到多次
String[] arr = s.split(regex);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void demo1() {
//疊詞 快快樂樂,高高興興
/*String regex = "(.)\\1(.)\\2"; //\\1代表第一組又出現一次 \\2代表第二組又出現一次
System.out.println("快快樂樂".matches(regex)); //true
System.out.println("快樂樂樂".matches(regex)); //true
System.out.println("高高興興".matches(regex)); //true
System.out.println("死啦死啦".matches(regex));*/ //flase
//疊詞 死啦死啦,高興高興
String regex2 = "(..)\\1";
System.out.println("死啦死啦".matches(regex2)); //true
System.out.println("高興高興".matches(regex2)); //true
System.out.println("快快樂樂".matches(regex2)); //flase
}
}
相關文章
- 正規表示式(java)Java
- java正規表示式Java
- Java常用正規表示式Java
- java正規表示式大全(常用)Java
- java中的正規表示式Java
- Java017-正規表示式Java
- java正規表示式之 groupJava
- java 正規表示式 舉例Java
- Java正規表示式總結Java
- Java-正規表示式regex庫Java
- Java 正規表示式——捕獲組Java
- 正規表示式(程式碼java版)Java
- Java 正規表示式例項操作Java
- 正規表示式
- 正規表示式.
- Java正規表示式簡單介紹Java
- java 正規表示式語法學習Java
- Java 正規表示式替換斜槓Java
- 正規表示式在Java中的使用Java
- Java 文字檢索神器 "正規表示式"Java
- Java 的正規表示式與爬蟲Java爬蟲
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- php –正規表示式PHP
- 【Linux】正規表示式Linux
- 【JavaScript】正規表示式JavaScript
- URL正規表示式
- 正規表示式 split()
- 初探正規表示式
- 正規表示式 test()
- 正規表示式(?!)作用
- 正規表示式 {n,}
- SQL正規表示式SQL
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括
- javascript正規表示式JavaScript
- Shell正規表示式
- 常用正規表示式