oracle 汉字正则表达式,oracle SQL篇-正则表达式

常见函数:

REGEXP_LIKE

LIKE语句的正则表达式,

REGEXP_REPLACE

用执行字符串替换源文本中与正则表达式匹配的字符串,

REGEXP_INSTR返回源字符串中首次匹配正则表达式的起始位置,

REGEXP_SUBSTR​

返回源串中匹配正则表达式的子字符串

正则表达式由标准的元字符(metacharacters)所构成:

字符

[[:alpha:]]任何字母。[A-Za-z]

[[:digit:]]任何数字。[0-9]

[[:alnum:]]任何字母和数字。[A-Za-z0-9]

[:blank:]   [ ],标准是空格和TAB,但Oracle里只有空格!

[:cntrl:]   CONTROL键

[:graph:]  即所有可见字符,不包括空格

[:print:]  可打印字符 ,即空格+所有可见字符

[[:space:]] 空白字符。

[[:punct:]] 任何标点符号。

[[:upper:]] 任何大写字母。[A-Z]

[[:lower:]] 任何小写字母。[a-z]

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

[:class:]   字符类。class如alnum、digit等。

[.element.]

整理类。受NLS_SORT影响。将多字节字符当作单字节字符看待。如在西班牙语中ch、ll都是用多字节表示的单字节。

[=char=]

等同类。在当前语言(Locale)下,匹配所有的属于相同的POSIX等同类字符指定的字符。如在西班牙语中,[[=n=]]指定了等同类字符n,它可以匹配El

Ni?o中的N和 ?.

边界符集合

^   每一行的开头,单行模式下等价于字符串的开头

$   每一行的结尾,单行模式下等价于字符串的结尾

在单行模式下,^和\A等价,$和\Z等价。

重复次数集合

*   匹配零次或多次--尽可能多的次数

?   零次或一次

+   一次或多次

{m} {m}?正好m次,贪婪与非贪婪一样的

{m,}    {m,}?至少m次

{m, n}  {m, n}?最少m最多n次

在上述字符后加?,如:*?,即为非贪婪模式。

贪婪模式会获取尽可能多的字符,而非贪婪模式会获取尽可能少的字符

组合操作符

[…]

方括号内任意字符或字符集合中的一个。在其中所有的操作符号都被视为普通符号,但以下除外:

★范围操作符:-

但当"-"位于字符列表的第一个或最后一个字符时,或位于范围的结尾时,会被当作"-"本身来看待。

当右方括号"]"出现在列表的第一个位置时,它会被当作"]"本身来处理。

[^…]

方括号内^为第一个字符时,表示与其后所有字符都不匹配的字符

(…)

圆括号,将复杂表达式当作单一表达式来处理

..|..    或

abc

和。直接将字符连在一起写

匹配操作符

\n

即后向引用。n为1~9,标识由圆括号里取得的匹配字符串。方向是从左到右。

转义操作符

\

将其后紧跟着的操作字符当作普通字符看待。

例如 abc*def 可以匹配

abdef或abcccdef等,但无法匹配abc*def,后者需要abc\*def才能匹配

示例:

​1.提取纯数字

select  abc from

table where  REGEXP_LIKE

(abc,'^[[:digit:]]+$') group by abc;

2.替换交换位置

select regexp_replace('Sang Cen', '(.*) (.*)',

'\2, \1') as reversed_name from

dual;​

​3.截取第一个大写字母

select regexp_substr('Sang Cen',

'^[[:upper:]]') from DUAL

4.​返回try或trying或tried或tries的位置

SELECT regexp_instr('We are trying to make the subject

easier.','tr(y(ing)?|(ied)|(ies))') resultnum FROM

dual;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值