正則表達式

2020-08-10 09:50:51

正則表達式

正則表達式描述了一種字串匹配的模式,也稱規則表達式;常用於檢索、替換符合指定模式(規則)的文字;大多數語言都支援正則表達式
正則表達式是由普通字元與特殊字元組成的字串

  • 普通字元
    – 原義字元、非列印字元
  • 特殊字元
    – 元字元:* + ? $ ^ . | \ ( ) { } [ ]

非列印字元

字元 說明
\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]

Java 中正則表達式

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

詳情鏈接: https://www.runoob.com/regexp/regexp-example.html.