加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle 正则表达式

发布时间:2020-12-12 16:28:20 所属栏目:百科 来源:网络整理
导读:原文:http://www.jb51.net/article/31227.htm Oracle正则表达式(regularexpression) 元字符 字符含义 举例说明 ^ 匹配字符串的开始位置(在[]中使用,此时它表示不接受该字符集合。 ^a:匹配以a开始的字符串 [^a]:匹配不含a的字符串 - 当使用在a-m表示范围

元字符

字符含义

举例说明

^

匹配字符串的开始位置(在[]中使用,此时它表示不接受该字符集合。

^a:匹配以a开始的字符串

[^a]:匹配不含a的字符串

-

当使用在a-m表示范围;

当使用在第一个字符时表示

连字符串,如[-abc]

$

匹配字符结束位置

‘a$':匹配以a结束的字符串

.

匹配除换行符 n之外的任何单字符。

?

匹配前面的子表达式零次或一次

tr(y(ing)?):可以表示try或者trying

*

匹配前面的子表达式零次或多次

+

匹配前面的子表达式一次或多次

()

标记一个子表达式的开始和结束位置

a(b)*可以匹配

ab,abb,abbb,youabb

(c|d)匹配c或d

[]

标记一个中括号表达式

[cd]匹配选择c或d等同于

(c|d)。匹配的是单字符,[^cd]是匹配c,d之外的单字符。

[a-z]表示所有小写字母

{m,n}

m= <出现次数 <=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。

|

表示或者的关系。指明两项之间的一个选择

字符簇

字符含义

[[:alpha:]]

任何字母。

[[:digit:]]

[[:digit:]]任何数字。

[[:alnum:]]

任何字母和数

[[:space:]]

任何白字符。

[[:upper:]]

任何大写字母。

[[:lower:]]

任何小写字母。

[[:punct:]]

任何标点符号。

[[:xdigit:]]

任何16进制的数字,相当于[0-9a-fA-F]。

Oracle支持正则表达式的内置函数

名称

语法

备注

REGEXP_LIKE

REGEXP_LIKE

(source_string,

pattern

[,match_parameter]

)

source_string:

源字符串

Pattern:

正则表达式

match_parameter:

匹配模式(i:不区分大小写;c:区分大小写;n:允许使用可以匹配任意字符串的操作符;m:将x作为一个包含多行的字符串。

REGEXP_REPLACE

REGEXP_REPLACE

(source_string,replace_string]

[,position]

[,occurtence]

[,match_parameter]

)

replace_string:

用于替换的字符串

Position:

开始搜索的起始位置

occurtence

指定替换第n次出现字符串

其他同上。

REGEXP_SUBSTR

REGEXP_SUBSTR

(source_string,pattern

[,position

[,occurrence

[,match_parameter]]]

)

Position:

指定在字符串中准确位置,默认为1

Occurrence:

指定在源字符串匹配过程中相对其他字符串,哪个字符串应该匹配。例如

select regexp_substr('The zip code

80831 is for falcon,co',

'[[:alpha:]]{3,}',1,3)

from dual;

结果选择的是code而非The或zip。

REGEXP_INSTR

REGEXP_INSTR

(source_string,start_position

[,return_option

[,match_parameter]]]]

)

start_position:

开始搜索位置

Occurrence:

第n次出现pattern,默认为1

return_option:

0:pattern的起始位置

1:pattern下一个字符起始位置

默认为0

REGEXP_COUNT

REGEXP_COUNT

(source_string,

pattern

[[,start_position]

[,match_parameter]])

11g新增的函数,表示pattern在原字符串中出现的次数

start_position:

开始搜索的位置


SQL> select regexp_replace('XX路1001弄12幢102室','d+幢','') from dual; REGEXP_REPLACE( --------------- XX路1001弄102室 select length(name),name,getCustText19(upper(name)),regexp_replace(upper(name),'[^[:alpha:]]','') from dual; 特殊字符: '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。 '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。 '.' 匹配除换行符 n之外的任何单字符。 '?' 匹配前面的子表达式零次或一次。 '*' 匹配前面的子表达式零次或多次。 '+' 匹配前面的子表达式一次或多次。 '( )' 标记一个子表达式的开始和结束位置。 '[]' 标记一个中括号表达式。 '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。 '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。 num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 正则表达式的一个很有用的特点是可以保存子表达式以后使用, 被称为Backreferencing. 允许复杂的替换能力 如调整一个模式到新的位置或者指示被代替的字符或者单词的位置. 被匹配的子表达式存储在临时缓冲区中, 缓冲区从左到右编号,通过数字符号访问。 下面的例子列出了把名字 aa bb cc 变成 cc,bb,aa. Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)','3,2,1') FROM dual; REGEXP_REPLACE('ELLENHILDISMIT cc,aa '' 转义符。 字符簇: [[:alpha:]] 任何字母。 [[:digit:]] 任何数字。 [[:alnum:]] 任何字母和数字。 [[:space:]] 任何白字符。 [[:upper:]] 任何大写字母。 [[:lower:]] 任何小写字母。 [[:punct:]] 任何标点符号。 [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 各种操作符的运算优先级 转义符 (),(?:),(?=),[] 圆括号和方括号 *,+,?,{n},{n,},m} 限定符 ^,$,anymetacharacter 位置和顺序 | “或”操作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

原文:http://www.aspzz.cn/article/31227.htm

Oracle正则表达式(regularexpression)

    推荐文章
      热点阅读