正則表達式描述了一種字串匹配的模式,也稱規則表達式;常用於檢索、替換符合指定模式(規則)的文字;大多數語言都支援正則表達式
正則表達式是由普通字元與特殊字元組成的字串
非列印字元
字元 | 說明 |
---|---|
\r | 匹配一個回車符 |
\n | 匹配一個換行符 |
\t | 匹配一個製表符 |
\f | 匹配一個換頁符 |
特殊字元
字元 | 說明 | 字元 | 說明 |
---|---|---|---|
$ | 匹配輸入字串的結尾位置 | ^ | 匹配輸入字串的起始位置 |
() | 標記子表達式的開始和結束 | \ | 跳脫符 |
* | 匹配前面表達式任意次 | ? | 匹配前面表達式零次或一次 |
+ | 匹配前面表達式一次或多次 | {n} | 匹配前面表達式n次 |
. | 匹配除換行符\n之外的任何單字元 | {n,m} | 最少匹配n次且最多匹配m次 |
[xyz] | xyz表示字元集合,匹配中括號所包含的任意字元 | x | y |
[^xyz] | 表示匹配非xyz集閤中的字元 | [a-z] | 匹配a至z範圍的字元 |
預定義字元
字元 | 說明 |
---|---|
\d | 匹配數位,等價於[0-9] |
\D | 匹配非數位,等價於[^\d] |
\w | 匹配任意字母數位,等價於[a-zA-Z0-9] 還有_ |
\W | 匹配非字母數位,等價於[^\w] |
\s | 匹配空白字元,等價於[ \t\r\n\f\v],注意其中包含空格 |
\S | 匹配非空白字元,等價於[^\s] |
public class TestRegex {
public static void main(String[] args) {
String s="15062285560"; //匹配150開頭的手機號
Pattern p=Pattern.compile("^150(?<a>\\d+)");//匹配規則
Matcher m=p.matcher(s);
if (m.matches()) {
System.out.println(m.group("a"));
}else {
System.out.println("未匹配");
}
}
}
命名分組
(?<a>\\d*)
表示將括號裏面內容分爲一組,並命名爲 a