正規表示式在PLSQL中的使用(附正規表示式語法)

2021-08-28 19:18:13 字數 3595 閱讀 8863

regexp_like:返回指定字串是否符合給定的正規表示式;

regexp_substr:返回在指定字串中截取出的符合給定正規表示式的子串;

regexp_instr:返回在指定字串中符合給定正規表示式的子串的開始位置;

regexp_replace:返回將指定字串中符合給定正規表示式的子串替換為指定子串後的結果。

一、regexp_like的使用:

regexp_like(string, regexp)

string:指定字串或字段內容,

regexp:用以匹配的正規表示式。

select 1

from dual

where regexp_like('[email protected]'

,'^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.])$');

二、regexp_substr的使用:

regexp_substr(string, regexp, startpos, occurence, mode)

string:指定字串或字段內容,

regexp:用以匹配的正規表示式,

startpos:起始位置(從第幾位開始正規表示式匹配),預設為1

ocurrence:指定第幾個匹配子串,預設為1

mode:'i'-不區分大小寫檢索,'c'-區分大小寫檢索,'n'-點號(.)不匹配換行符,'m'-多行模式,'x'-忽略正規表示式中的空白字元,預設為'c'

例如,在字串中以逗號為分隔符,找到第三個子串:

select regexp_substr('張三,男,1994-01-01,順德大良', '[^,]+', 1, 3)

from dual;

三、regexp_instr的使用:

regexp_instr(string, regexp, startpos, occurence, returnopt, mode)

string:指定字串或字段內容,

regexp:用以匹配的正規表示式,

startpos:起始位置(從第幾位開始正規表示式匹配),預設為1

ocurrence:指定第幾個匹配子串,預設為1

returnopt:0-返回出現的開始位置,1-返回字元發生之後的位置(結束位置+1),預設為0

mode:'i'-不區分大小寫檢索,'c'-區分大小寫檢索,'n'-點號(.)不匹配換行符,'m'-多行模式,'x'-忽略正規表示式中的空白字元,預設為'c'

例如,在一句話中以不區分大小寫的要求,找到給定的若干字母中某乙個字母第一次出現的位置:

select regexp_instr('muhammadun rasul allah', 'l|m|n', 1, 1, 0, 'i')

from dual;

四、regexp_replace的使用:

regexp_replace(string, regexp, replacestr, startpos, occurence, mode)

string:指定字串或字段內容,

regexp:用以匹配的正規表示式,

replacestr:替換子串,預設為null

startpos:起始位置(從第幾位開始正規表示式匹配),預設為1

ocurrence:指定第幾個匹配子串,預設為1

mode:'i'-不區分大小寫檢索,'c'-區分大小寫檢索,'n'-點號(.)不匹配換行符,'m'-多行模式,'x'-忽略正規表示式中的空白字元,預設為'c'

例如,隱藏手機號中間的四位數字:

select regexp_replace('18806711314', '\d', '大吉大利', 4, 1) from dual;
附一:正規表示式基本語法

metacharacter

description

^表示匹配字串的開始位置,若用在中括號中[ ] 時,表示不匹配括號中字串

$表示匹配字串的結束位置,若設定了表示式物件的multiline屬性(m),則也匹配'/n'或'/r'

*表示匹配零次到多次(有或沒有)

+表示匹配一次到多次(至少有一次)

?表示匹配零次或一次(至多有一次)

.表示匹配單個字元

|表示為或者,兩項中取一項

()表示匹配括號中全部字元

表示匹配括號中乙個字元,範圍描述,如[0-9] [a-z] [a-z]

{}用於限定匹配次數,如 表示匹配n個字元,表示至少匹配n個字元,表示至少n個最多m個

\轉義字元,如上基本符號匹配都需要轉義字元 ,如 \*  表示匹配*號

\w表示英文本母和數字

\w表示非字母和數字

\d表示數字

\d表示非數字

附二:部分常用正規表示式

description

regexp

匹配由26個英文本母組成的字串

^[a-za-z]+$

匹配由26個英文本母的大寫組成的字串

^[a-z]+$

匹配由26個英文本母的小寫組成的字串

^[a-z]+$

匹配由數字和26個英文本母組成的字串

^[a-za-z0-9]+$

匹配由數字、26個英文本母或者下劃線組成的字串

^\w+$

匹配整數

^-?[1-9]\d*$

匹配正整數

^[1-9]\d*$

匹配負整數

^-[1-9]\d*$

匹配非負整數

^[1-9]\d*|0$

匹配非正整數

^-[1-9]\d*|0$

電子郵箱

^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.])$

十六進製制字串

ip位址

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

html標籤

^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$

sql語句

^(select|drop|delete|create|update|insert).*$

^[1-9]\d(?!\d)$

純unicode編碼中的漢字字串

^[u4e00-u9fa5],$

空白行\n[\s| ]*\r

首尾空格

(^\s*)|(\s*$)

雙位元組字元(含漢字)

[^\x00-\xff]

PLSQL中正規表示式使用

原 2018年10月08日 14 48 11 寫 也要符合基本法 閱讀數 2008 更多分類專欄 oracle學習筆記 regexp like 返回指定字串是否符合給定的正規表示式 regexp substr 返回在指定字串中截取出的符合給定正規表示式的子串 regexp instr 返回在指定字串...

在SQL使用正規表示式

if exists select from dbo.sysobjects where id object id n dbo getvaluebyregep and xtype in n fn n if n tf drop function dbo getvaluebyregep goset quot...

python正規表示式及使用正規表示式的例子

正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...