正則表達式:就是有一定規則的字符串。然後其他方法調用時將其作爲參數傳入。
1,常見符號
字符
x 字符 x
\\ 反斜線字符
\0n 帶有八進制值 0 的字符 n (0 <= n <= 7)
\0nn 帶有八進制值 0 的字符 nn (0 <= n <= 7)
\0mnn 帶有八進制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 帶有十六進制值 0x 的字符 hh
\uhhhh 帶有十六進制值 0x 的字符 hhhh
\t 製表符 ('\u0009')
\n 新行(換行)符 ('\u000A')
\r 回車符 ('\u000D')
\f 換頁符 ('\u000C')
\a 報警 (bell) 符 ('\u0007')
\e 轉義符 ('\u001B')
\cx 對應於 x 的控制符
字符類
[abc] a、b 或 c(簡單類)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
預定義字符類
. 任何字符(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單詞字符:[a-zA-Z_0-9]
\W 非單詞字符:[^\w]
邊界匹配器
^ 行的開頭
$ 行的結尾
\b 單詞邊界
\B 非單詞邊界
\A 輸入的開頭
\G 上一個匹配的結尾
\Z 輸入的結尾,僅用於最後的結束符(如果有的話)
\z 輸入的結尾
Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
Logical 運算符
XY X 後跟 Y
X|Y X 或 Y
(X) X,作爲捕獲組
2,正則表達式的四種功能
匹配、切割、替換、獲取
1)匹配:String中的matches方法。
public static void qqCheck(String qq)
{
String reg = "[1-9]\\d{4-14}";//第一位只能是1-9, 後面是數字,接有4-14位。
//返回結果是boolean型,符合reg返回true。
qq.matches(reg);
}
2)切割:String[] 中split(String reg)
public class Regex {
public static void main(String[] args) {
String reg1 = "\\.";//以.切割
String reg2 = " +";//零個或多個空格切
String reg3 = "(.)\\1+";//以疊詞切,
String[] s = "192.168.1.1".split(reg1);
print(s);
s = "he ll o ".split(reg2);
print(s);
s = "dfnnnnnnnnnngiiiiidfiiiisdssssdcs".split(reg3);
print(s);
}
public static void print(String[] s)
{
for(String str : s)
System.out.print(str);
}
}
3)替換:String 中replaceAll方法
String s = "nnnnnnnnniiiiiiiissss";
String reg = "(.)\\1+";
s=s.replaceAll(reg, "$1");//$1表示reg表達式括號內的組合
4)獲取:
package com.itheima;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex
{
public static void main(String[] args)
{
String s = "ma shang jiu yao qu heima ";
String reg = "\\b\\w{3}\\b";//這裏定義正則表達式
get(s, reg);
}
public static void get(String s, String reg)
{
//Pattern是一個類,調用功能將規則封裝成一個對象。
Pattern p = Pattern.compile(reg);
//將正則對象p和要作用的字符串s關聯,返回的一個匹配器對象。
Matcher m = p.matcher(s);
while(m.find())//匹配器查找與模式匹配的一個子序列
System.out.println(m.group());//返回給定組捕獲的子序列。
}
}