閱讀546 返回首頁    go 阿裏雲


正則表達式規範__附錄_SQL_大數據計算服務-阿裏雲

ODPS SQL中的正則表達式采用的是PCRE的規範,匹配時是按字符進行,支持的元字符如下:

元字符          說明
^                行首
$                行尾
.                任意字符
*                匹配零次或多次
+                匹配1次或多次
?                匹配零次或1次
?                匹配修飾符,當該字符緊跟在任何一個其他限製符 (* ,+, ?, {n}, {n,}, {n,m})後麵時,匹配模式是非貪 婪的。
                非貪婪模式盡可能少的匹配所搜索的字符串, 而默認的貪婪模式則盡可能多的匹配所搜索的字符串。
A|B                A或B
(abc)*            匹配abc序列零次或多次
{n}或{m,n}        匹配的次數
[ab]            匹配括號中的任一字符,例中模式匹配a或b
[a-d]            匹配a,b,c,d任一字符
[^ab]            ^表示非,匹配任一非a非 b的字符
[::]            見下表POSIX字符組
                轉義符
n                n為數字1-9,後向引用
d                數字
D                非數字

POSIX字符組

POSIX字符組        說明                範圍
[[:alnum:]]        字母字符和數字字符    [a-zA-Z0-9]
[[:alpha:]]        字母                [a-zA-Z]
[[:ascii:]]        ASCII字符            [x00-x7F]
[[:blank:]]        空格字符和製表符    [ t]
[[:cntrl:]]        控製字符            [x00-x1Fx7F]
[[:digit:]]        數字字符            [0-9]
[[:graph:]]        空白字符之外的字符    [x21-x7E]
[[:lower:]]        小寫字母字符        [a-z]
[[:print:]]        [:graph:]和空白字符    [x20-x7E]
[[:punct:]]        標點符號            [][!”#$%&’()*+,./:;<=>? @^_`{|}~-]
[[:space:]]        空白字符            [ trnvf]
[[:upper:]]        大寫字母字符        [A-Z]
[[:xdigit:]]    十六進製字符        [A-Fa-f0-9]

由於係統采用反斜線””作為轉義符,因此正則表達式的模式中出現的””都要進行二次轉義。如正則表達式要匹配字符串”a+b”, 其中”+”是正則中的一個特殊字符,因此要用轉義的方式表達,在正則引擎中的表達方式是”a+b”,由於係統還要解釋一層轉義, 因此能夠匹配該字符串的表達式是”a\+b”。例如,假設存在表test_dual,

select 'a+b' rlike 'a\+b' from test_dual;

+------+
| _c1  |
+------+
| true |
+------+

極端的情況,如果在要匹配字符””, 由於在正則引擎中””是一個特殊字符,因此要表示為””,而係統還要對表達式進行一次轉義,因此寫成”\”

select 'a\b', 'a\b' rlike 'a\\b' from test_dual;

+-----+------+
| _c0 | _c1  |
+-----+------+
| ab | true |
+-----+------+

備注:

  • 在ODPS SQL中寫”ab”, 而在輸出結果中顯示’ab’,同樣是因為ODPS會對表達式進行轉義。

如果字符串中有製表符TAB, 係統在讀入’t’這兩個字符的時候,即已經將其存為一個字符,因此在正則的模式中也是一個普通的字符。

select 'atb', 'atb' rlike 'atb' from test_dual;

+---------+------+
| _c0     | _c1  |
+---------+------+
| a     b | true |
+---------+------+

最後更新:2016-05-06 10:43:07

  上一篇:go LIKE字符匹配__附錄_SQL_大數據計算服務-阿裏雲
  下一篇:go 保留字__附錄_SQL_大數據計算服務-阿裏雲