PLSQL中正規表示式使用

2021-09-26 15:11:30 字數 3837 閱讀 9267

2023年10月08日 14:48:11

寫**也要符合基本法

閱讀數 2008

更多分類專欄:

oracle學習筆記

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]

python中正規表示式使用

1 正規表示式的常用操作符 操作符說明例項 表示任何單個字元 字符集,對單個字元給出取值範圍 abc 表示a b c,a z 表示a到z單個字元 非字符集,對單個字元給出排除範圍 abc 表示非a或b或c的單個字元 前乙個字元0次或無限次擴充套件 abc 表示ab abc abcc abccc等 前...

JS中正規表示式

js中正規表示式有幾種不同的使用方法,一些用法是通過字串物件來使用,另外一些通過正規表示式物件使用。一 regexp 正規表示式 的屬性和方法 1 屬性 regexp的例項有幾個唯讀的屬性 global表示是否為全域性匹配,igorecase表示是否忽略大小寫,multiline表示是否為多行匹配,...

PHP中正規表示式

正規表示式一般表示式的形式如下 love 其中位於 定界符之間的部分就是將要在目標物件中進行匹配的模式。為了能夠使使用者更加靈活的的定製模式內容,正規表示式提供了專門的 元字元 所謂元字元就是指那些表示式中具有特殊意義的字元,可以用來規定其前導字元 即在元字元前面的字元 在目標物件中的出現模式。較為...