Evaluate the following expression using meta. character for regular expression:
'[^Ale|ax.r$]'
Which two matches would be returned by this expression? (Choose two.)
A. Alex
B. Alax
C. Alxer
D. Alaxendar
E. Alexender
Answer: DE
Oracle正則表達式語法,正則表達式是在10g才添加進來的,其匹配字符、量詞字符、匹配選項、相關函數如下:
匹配字符:
字符 |
功能 |
^ |
標記行的開始 |
$ |
標記行的結束 |
= = |
匹配字符族,如:[=a=] 可匹配字符a、â、ã、ä、å等 |
. |
匹配任何字符(除了NULL) |
[:alnum:] |
匹配任何字母和數字 |
[:alpha:] |
匹配任何字母 |
[:blank:] |
匹配空格 |
[:cntrl:] |
匹配任何控制字符(在ASCII碼錶中不可打印的字符,如ESC鍵) |
[:digit:] |
任何數字 |
[:graph:] |
任何 標點符號、大小寫字母以及數字 |
[:lower:] |
任何小寫字母 |
[:print:] |
任何可打印的字符 |
[:punct:] |
任何標點符號,如,.+-=等 |
[:space:] |
任何空白字符,如回車、換行、製表等 |
[:upper:] |
任何大寫字母 |
[:xdigit:] |
任何十六進制數字,即0-9A-F |
| |
分隔符 |
() |
子表達式,可作爲量詞或向後引用的前段 |
[char] |
匹配括號中的任何字符,[^char]表示除開括號中字符後的任何字符 |
量詞字符:
字符 |
功能 |
* |
匹配0次或多次 |
? |
匹配0次或1次 |
+ |
匹配1次或多次 |
{m} |
匹配m次 |
{m,} |
匹配至少m次 |
{m,n} |
匹配至少m次,最多n次 |
\n |
引用第n個匹配 |
匹配選項:
字符 |
功能 |
c |
匹配時區分大小寫 |
i |
匹配時不區分大小寫 |
m |
源字符串爲多行匹配 |
n |
.可匹配任何換行符 |
函數:
REGEXP_LIKE 是LIKE語句的正則表達式版本
語法:REGEXP_LIKE(源字符串, 匹配表達式[,匹配選項])
REGEXP_INSTR 返回源字符串中首次匹配正則表達式的起始位置
語法:REGEXP_INSTR(srcstr, pattern [, position [, occurrence[, return_option [, match_option]]]])
srcstr:源字符串
pattern:正則表達式
position:搜索開始位置
occurrence:返回第幾個匹配項
return_option:返回選項,0表示開始位置,1表示返回匹配的結束位置
match_option:匹配選項
REGEXP_SUBSTR 返回源串中匹配正則表達式的子字符串
語法:SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]])
srcstr:源字符串
pattern:正則表達式
position:搜索的開始位置
occurrence:返回第幾個匹配的字符串
match_option:匹配選項
REGEXP_REPLACE 用執行字符串替換源文本中與正則表達式匹配的字符串
語法:REGEXP_REPLACE(srcstr, pattern [,replacestr [, position[, occurrence [, match_option]]]])
srcstr:源字符串
pattern:正則表達式
replacestr:新的字符串
position:搜索起始位置
occurrence:第幾個匹配項
match_option:匹配選項
題目的意思是哪兩個選項能和'[^Ale|ax.r$]'匹配