語法 | 意義 | 說明 |
"." | 任意字符 | |
"^" | 字符串開始 | '^hello'匹配'helloworld'而不匹配'aaaahellobbb' |
"$" | 字符串結尾 | 與上同理 |
"*" | 0 個或多個字符(貪婪匹配) | <*>匹配<title>chinaunix</title> |
"+" | 1 個或多個字符(貪婪匹配) | 與上同理 |
"?" | 0 個或多個字符(貪婪匹配) | 與上同理 |
*?,+?,?? | 以上三個取第一個匹配結果(非貪婪匹配) | <*>匹配<title> |
{m,n} | 對於前一個字符重複m到n次,{m}亦可 | a{6}匹配6個a、a{2,4}匹配2到4個a |
{m,n}? | 對於前一個字符重複m到n次,並取儘可能少 | ‘aaaaaa’中a{2,4}只會匹配2個 |
"\\" | 特殊字符轉義或者特殊序列 | |
[] | 表示一個字符集 | [0-9]、[a-z]、[A-Z]、[^0] |
"|" | 或 | A|B,或運算 |
(...) | 匹配括號中任意表達式 | |
(?#...) | 註釋,可忽略 | |
(?=...) | Matches if ... matches next, but doesn't consume the string. | '(?=test)' 在hellotest中匹配hello |
(?!...) | Matches if ... doesn't match next. | '(?!=test)' 若hello後面不爲test,匹配hello |
(?<=...) | Matches if preceded by ... (must be fixed length). | '(?<=hello)test' 在hellotest中匹配test |
(?<!...) | Matches if not preceded by ... (must be fixed length). | '(?<!hello)test' 在hellotest中不匹配test |
正則表達式特殊序列表如下:
特殊序列符號 | 意義 |
\A | 只在字符串開始進行匹配 |
\Z | 只在字符串結尾進行匹配 |
\b | 匹配位於開始或結尾的空字符串 |
\B | 匹配不位於開始或結尾的空字符串 |
\d | 相當於[0-9] |
\D | 相當於[^0-9] |
\s | 匹配任意空白字符:[\t\n\r\r\v] |
\S | 匹配任意非空白字符:[^\t\n\r\r\v] |
\w | 匹配任意數字和字母:[a-zA-Z0-9] |
\W | 匹配任意非數字和字母:[^a-zA-Z0-9] |
正則表達式特殊序列表如下: