解读047关于正则表达式'[^Ale|ax.r$]'

前端之家收集整理的这篇文章主要介绍了解读047关于正则表达式'[^Ale|ax.r$]'前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

92. 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才添加进来的,其匹配字符、量词字符、匹配选项、相关函数如下:

匹配字符:


@H_301_56@

字符

@H_301_56@

^

@H_301_56@

$

@H_301_56@

= =

@H_301_56@

.

@H_301_56@

[:alnum:]

@H_301_56@

[:alpha:]

@H_301_56@

[:blank:]

@H_301_56@

[:cntrl:]

@H_301_56@

[:digit:]

@H_301_56@

[:graph:]

@H_301_56@

[:lower:]

@H_301_56@

[:print:]

@H_301_56@

[:punct:]

@H_301_56@

[:space:]

@H_301_56@

[:upper:]

@H_301_56@

[:xdigit:]

@H_301_56@

|

@H_301_56@

()

@H_301_56@

[char]

功能

标记行的开始

标记行的结束

匹配字符族,如:[=a=] 可匹配字符a、â、ã、ä、å等

匹配任何字符(除了NULL)

匹配任何字母和数字

匹配任何字母

匹配空格

匹配任何控制字符(在ASCII码表中不可打印的字符,如ESC键)

任何数字

任何 标点符号、大小写字母以及数字

任何小写字母

任何可打印的字符

任何标点符号,如,.+-=等

任何空白字符,如回车、换行、制表等

任何大写字母

任何十六进制数字,即0-9A-F

分隔符

子表达式,可作为量词或向后引用的前段

匹配括号中的任何字符,[^char]表示除开括号中字符后的任何字符



量词字符:


@H_301_56@

字符

@H_301_56@

*

@H_301_56@

?

@H_301_56@

+

@H_301_56@

{m}

@H_301_56@

{m,}

@H_301_56@

{m,n}

@H_301_56@

\n

功能

匹配0次或多次

匹配0次或1次

匹配1次或多次

匹配m次

匹配至少m次

匹配至少m次,最多n次

引用第n个匹配


匹配选项:


@H_301_56@

字符

@H_301_56@

c

@H_301_56@

i

@H_301_56@

m

@H_301_56@

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,occurrence [,match_option]]])
srcstr:源字符串
pattern:正则表达式
position:搜索的开始位置
occurrence:返回第几个匹配的字符串
match_option:匹配选项

REGEXP_REPLACE 用执行字符串替换源文本中与正则表达式匹配的字符串
语法:REGEXP_REPLACE(srcstr,replacestr [,position[,match_option]]]])
srcstr:源字符串
pattern:正则表达式
replacestr:新的字符串
position:搜索起始位置
occurrence:第几个匹配项
match_option:匹配选项

题目的意思是哪两个选项能和'[^Ale|ax.r$]'匹配 '[^Ale|ax.r$]'中^表示只匹配不在集合{'A','l','e','|','a','x','.','r','$'}中的字符,此处的'|'、'.'、'$'只是表示普通的字符,而非匹配符 select regexp_instr('Alex','[^Ale|ax.r$]') from dual; REGEXP_INSTR('ALEX','[^ALE|AX.R$]') ----------------------------------- 0 select regexp_instr('Alax','[^Ale|ax.r$]') from dual; REGEXP_INSTR('ALAX','[^ALE|AX.R$]') ----------------------------------- 0 select regexp_instr('Alxer','[^Ale|ax.r$]') from dual; REGEXP_INSTR('ALXER','[^ALE|AX.R$]') ------------------------------------ 0 select regexp_instr('Alaxendar','[^Ale|ax.r$]') from dual; REGEXP_INSTR('ALAXENDAR','[^ALE|AX.R$]') ---------------------------------------- 6 select regexp_instr('Alexender','[^Ale|ax.r$]') from dual; REGEXP_INSTR('ALEXENDER','[^ALE|AX.R$]') ---------------------------------------- 6 因此可见答案是DE

猜你在找的正则表达式相关文章