Oracle 正則表達式

.????正則表達式簡介:

????正則表達式,就是以某種模式來匹配一類字符串。一旦概括了某類字符串,那么正則表達式即可用于針對字符串的各種相關操作。例如,判斷匹配性,進行字符串的重新組合等。正則表達式提供了字符串處理的快捷方式。Oracle?10g及以后的版本中也支持正則表達式.

.????正則表達式相對通配符的優勢:

1.???????正則表達式中不僅存在著代表模糊字符的特殊字符,而且存在著量詞等修飾字符,使得模式的控制更加靈活和強大。

2.???????通配符的使用一般是在特定的環境下,不同的環境下,通配符有可能不同。而正則表達式,不但廣泛應用于各種編程語言,而且在各種編程語言中,保持了語法的高度一致性。?

.????元字符:

元字符是指在正則表達式中表示特殊含義的字符。

?

ORACLE正則表達式

元字符

含義

^

匹配輸入字符串的開始位置,在方括號表達式中使用,此時它表示不接受該字符集合。

$

匹配輸入字符串的結尾位置。如果設置了?RegExp?對象的?Multiline?屬性,則?$?也匹配?'n'??'r'

.

匹配除換行符?n之外的任何單字符。

?

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

+

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

*

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

|

指明兩項之間的一個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的字符串。

()

標記一個子表達式的開始和結束位置(字符組)

[]

標記一個中括號表達式。

{m,n}

一個精確地出現次數范圍,m=<出現次數<=n'{m}'表示出現m次,'{m,}'表示至少出現m次。

.????量詞

???量詞用來指定量詞的前一個字符出現的次數。量詞的形式主要有“?”、“*”、“+”、“{}”。量詞在用于匹配字符串時,默認遵循貪婪原則。貪婪原則是指,盡可能多地匹配字符。例如:字符串“Function(p),(OK)”,如果使用正則表達式“.?”進行匹配,則得到字符串“(p),(OK)”?,而非“(p)”;若欲得到“(p)”,則必須取消量詞的貪婪原則,此時只需要為量詞后追加另外一個數量詞“?”即可。如上面的正則表達式應該改為“.??”。

.????字符轉義:

????元字符在正則表達式中有特殊含義。如果需要使用其原義,則需要用到字符轉義。字符轉義使用字符“\”來實現。其語法模式為:“\”+元字符。例如,“\.”表示普通字符“.”;?????“\.doc”匹配字符串“.doc”;而普通字符“\”需要使用“\\”來表示。

.????字符組.

字符組是指將模式中的某些部分作為一個整體。這樣,量詞可以來修飾字符組,從而提高正則表達式的靈活性。字符組通過()來實現.

許多編程語言中,可以利用“$1”、“$2”等來獲取第一個、第二個字符組,即所謂的后向引用。在Oracle中,引用格式為“\1”、“\2”。

.????正則表達式分支

????可以利用“|”來創建多個正則表達式分支。例如,“\d{4}|\w{4}”可以看做兩個正則表達式——“\d{4}”和“\w{4}”,匹配其中任何一個正則表達式的字符串都被認為匹配整個正則表達式。如果該字符串兩個正則表達式分支都匹配,那么將被處理為匹配第一個正則表達式分支。

.????字符類.

在Oracle中,正則表達式的用法與標準用法略有不同。這種不同主要體現在對于字符類的定義上。Orale中不使用字符“\”與普通字符組合的形式來實現字符類,而是具有其特殊語法.?

.????ORACLE中的四個正則表達式相關函數.

1.???????regexp_like(expression,?regexp)

???返回值為一個布爾值。如果第一個參數匹配第二個參數所代表的正則表達式,那么將返回真,否則將返回假。

?舉例:???select?*?from?people?where?regexp_like(name,?'^J.*$');?

相當于:??select?*?from?people?where?name?like?'J%';?

2.???????regexp_instr(expression,?regexp,?startindex,?times)

返回找到的匹配字符串的位置.

參數startindex表示開始進行匹配比較的位置;參數times表示第幾次匹配作為最終匹配結果。

舉例:?select?regexp_instr('12.158',?'\.')?position?from?dual;?

regexp_instr('12.158',?'\.')用于獲取第一個小數點的位置。

3.???????regexp_substr(expression,?regexp)

???返回第一個字符串參數中,與第二個正則表達式參數相匹配的子字符串。

???舉例:?create?table?html(id?integer,?html?varchar2(2000));?

insert?into?html?

values?(1,?'<a?href="http://mail.google.com/2009/1009.html">mail?link</a>');?

表html中存儲了HTML標簽及內容。現欲從標簽<a>中獲得鏈接的url,那么可以利用regexp_substr()函數。

select?id,?regexp_substr(html,?'http[a-zA-Z0-9\.:/]*')?url?from?html;?

?4.??regexp_replace(expression,?regexp,?replacement)

?????將expression中的按regexp匹配到的部分用replacement代替.

?????在參數replacement中,可以含有后向引用,以便將正則表達式中的字符組重新捕獲。例如,某些國家和地區的日期格式可能為“MM/DD/YYYY”,那么可以利用regexp_replace()函數來轉換日期格式。

select?regexp_replace('09/29/2008',?'^([0-9]{2})/([0-9]{2})/([0-9]{4})$',?'\3-\1-\2')??replace?

from?dual;?

?

注:?在進行正則表達式匹配時,還可以忽略字符大小寫形式進行匹配.但是不能解除[[:upper:]]和[[:lower:]]的作用.

select?*?from?people?where?regexp_like(name,?'or');?

select?*?from?people?where?regexp_like(name,?'or',?'i');???--‘i’表示忽略大小寫

十.?正則表達式練習?

第一:?REGEXP_LIKE函數用法

EMP表結構如下:

SQL>?desc?emp;

?Name??????????????????????????????????????Null?????Type

?-----------------------------------------?--------?----------------------------

?

?EMPNO?????????????????????????????????????NOT?NULL?NUMBER(4)

?ENAME??????????????????????????????????????????????VARCHAR2(10)

?JOB????????????????????????????????????????????????VARCHAR2(9)

?MGR????????????????????????????????????????????????NUMBER(4)

?HIREDATE???????????????????????????????????????????DATE

?SAL????????????????????????????????????????????????NUMBER(7,2)

?COMM???????????????????????????????????????????????NUMBER(7,2)

?DEPTNO?????????????????????????????????????????????NUMBER(2)

EMP表中部分數據如下:

SQL>?select?empno,ename,sal,hiredate?from?emp;

?

?????EMPNO?ENAME?????????????SAL?HIREDATE

----------?----------?----------?--------------

??????7369?SMITH?????????????800?17-12月-80

??????7499?ALLEN????????????1600?20-2月?-81

??????7521?WARD?????????????1250?22-2月?-81

??????7566?JONES????????????2975?02-4月?-81?

?

下面給出幾種REGEXP_LIKE函數的例子

1、查找員工編號為4位數字的員工信息

SQL>?select?empno,ename?from?emp?where?regexp_like(empno,'^[[:digit:]]{4}$');

?或者:?select?empno,ename?from?emp?where?regexp_like(empno,'^[0-9]$');

?????EMPNO?ENAME

----------?----------

??????7369?SMITH

??????7499?ALLEN

??????7521?WARD

??????7566?JONES

2、查找員工姓名為全英文的員工信息

SQL>??select?empno,ename?from?emp?where?regexp_like(ename,'^[[:alpha:]]+$');

?或者:??select?*?from?emp?where?regexp_like(ename,'^[a-zA-Z]+$');

?????EMPNO?ENAME

----------?----------

??????7369?SMITH

??????7499?ALLEN

??????7521?WARD

??????7566?JONES

??????7654?MARTIN

3、查找員工姓名以“a”字母開頭,不區分大小寫

SQL>?select?empno,ename?from?emp?where?regexp_like(ename,'^a','i');

?

?????EMPNO?ENAME

----------?----------

??????7499?ALLEN

??????7876?ADAMS

4、查找員工姓名為全英文,且以“N”結尾的員工信息

SQL>?select?empno,ename?from?emp?where?regexp_like(ename,'^[[:alpha:]]+N$');

?

?????EMPNO?ENAME

----------?----------

??????7499?ALLEN

??????7654?MARTIN

5、查找員工編號以非數字開頭的員工信息

SQL>?select?empno,ename?from?emp?where?regexp_like(empno,'[^[:digit:]]');

?

no?rows?selected?

?

第二:?REGEXP_INSTR函數用法

1、查找員工編號中第一個非數字字符的位置

SQL>?select?regexp_instr(empno,'[^[:digit:]]')?position?from?emp;

?

?POSITION

----------

?????????0

?????????0

?????????0

2、從第三個字符開始,查找員工編號中第二個非數字字符的位置

SQL>?select?regexp_instr(empno,'[^[:digit:]]',3,2)?position?from?emp;

?

?POSITION

----------

?????????0

?????????0?

?

?

第三:?REGEXP_SUBSTR函數用法

1、返回從ename的第二個位置開始查找,并且是以“L”開頭到結尾的字串

SQL>?select?regexp_substr(ename,'L.*','2')?substr?from?emp;

?

SUBSTR

------------------

LLEN

LAKE

LARK?

?

?

第四:REGEXP_REPLACE函數用法

1、把ename中所有非字母字符替換為“A”

SQL>?update?emp?set?ename=regexp_replace(ename,?'[^[:alpha:]]',?'A')

2?where?regexp_like(ename,?'[^[:alpha:]]');

?

1?row?updated?

?

轉載來源:http://wenku.baidu.com/view/4d7fc0d126fff705cc170a58.html

?

________________________________________________________________________________________________________________

Oracle 正則表達式? 就是由普通字符(例如字符a到z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。? 本文詳細地列出了能在正則表達式中使用,以匹配文本的各種字符。當你需要解釋一個現有的正則表達式時,可以作為一個快捷的參考。更多詳細內容,請參考:Francois Liger,Craig McQueen,Pal Wilton[劉樂亭譯] C#字符串和正則表達式參考手冊北京:清華大學出版社2003.2? 一. ? ? 匹配字符? 字符類 匹配的字符 ?舉 例? \d 從0-9的任一數字 ?\d\d匹配72,但不匹配aa或7a? \D 任一非數字字符 ?\D\D\D匹配abc,但不匹配123? \w 任一單詞字符,包括A-Z,a-z,0-9和下劃線\w\w\w\w匹配Ab-2,但不匹配∑£$%*或Ab_@? \W 任一非單詞字符 ?\W匹配@,但不匹配a? \s 任一空白字符,包括制表符,換行符,回車符,換頁符和垂直制表符匹配在HTML,XML和其他標準定義中的所有傳統空白字符? \S 任一非空白字符 ?空白字符以外的任意字符,如A%&g3;等? . 任一字符 ?匹配除換行符以外的任意字符除非設置了MultiLine先項? […] 括號中的任一字符 ?[abc]將匹配一個單字符,a,b或c.? [a-z]將匹配從a到z的任一字符? [^…] 不在括號中的任一字符[^abc]將匹配一個a、b、c之外的單字符,可以a,b或A、B、C? [a-z]將匹配不屬于a-z的任一字符,但可以匹配所有的大寫字母?
二. ? ? 重復字符? 重復字符 含 義 ?舉 例? {n} 匹配前面的字符n次 ?x{2}匹配xx,但不匹配x或xxx? {n,} 匹配前面的字符至少n次x{2}匹配2個或更多的x,如xxx,xxx..? {n,m} 匹配前面的字符至少n次,至多m次。如果n為0,此參數為可選參數x{2,4}匹配xx,xxx,xxxx,但不匹配xxxxx? ? 匹配前面的字符0次或1次,實質上也是可選的x?匹配x或零個x? + 匹配前面的字符0次或多次x+匹配x或xx或大于0的任意多個x? * 匹配前面的字符0次或更多次x*匹配0,1或更多個x?
三. ? ? 定位字符? 定位字符 描 述? ^ 隨后的模式必須位于字符串的開始位置,如果是一個多行字符串,則必須位于行首。對于多行文本(包含回車符的一個字符串)來說,需要設置多行標志? $ 前面的模式必須位于字符串的未端,如果是一個多行字符串,必須位于行尾? \A 前面的模式必須位于字符串的開始位置,忽略多行標志? \z 前面的模式必須位于字符串的未端,忽略多行標志? \Z 前面的模式必須位于字符串的未端,或者位于一個換行符前? \b 匹配一個單詞邊界,也就是一個單詞字符和非單詞字符中間的點。要記住一個單詞字符是[a-zA-Z0-9]中的一個字符。位于一個單詞的詞首? \B 匹配一個非單詞字符邊界位置,不是一個單詞的詞首? 注:定位字符可以應用于字符或組合,放在字符串的左端或右端?
四. ? ? 分組字符? 分組字符 定 義 ?舉 例? () 此字符可以組合括號內模式所匹配的字符,它是一個捕獲組,也就是說模式匹配的字符作為最終設置了ExplicitCapture選項――默認狀態下字符不是匹配的一部分輸入字符串為:ABC1DEF2XY? 匹配3個從A到Z的字符和1個數字的正則表達式:([A-Z]{3}\d)? 將產生兩次匹配:Match 1=ABC1;Match 2=DEF2? 每次匹配對應一個組:Match1的第一個組=ABC;Match2的第1個組=DEF? 有了反向引用,就可以通過它在正則表達式中的編號以及C#和類Group,GroupCollection來訪問組。如果設置了ExplicitCapture選項,就不能使用組所捕獲的內容? (?:) 此字符可以組合括號內模式所匹配的字符,它是一個非捕獲組,這意味著模式所的字符將不作為一個組來捕獲,但它構成了最終匹配結果的一部分。它基本上與上面的組類型相同,但設定了選項ExplicitCapture輸入字符串為:1A BB SA1 C? 匹配一個數字或一個A到Z的字母,接著是任意單詞字符的正則表達式為:(?:\d|[A-Z]\w)? 它將產生3次匹配:每1次匹配=1A;每2次匹配=BB;每3次匹配=SA? 但是沒有組被捕獲? (?<name>) 此選項組合括號內模式所匹配的字符,并用尖括號中指定的值為組命名。在正則表達式中,可以使用名稱進行反向引用,而不必使用編號。即使不設置ExplicitCapture選項,它也是一個捕獲組。這意味著反向引用可以利用組內匹配的字符,或者通過Group類訪問輸入字符串為:Characters in Sienfeld included Jerry Seinfeld,Elaine Benes,Cosno Kramer and George Costanza能夠匹配它們的姓名,并在一個組llastName中捕獲姓的正則表達式為:\b[A-Z][a-z]+(?<lastName>[A-Z][a-z]+)\b? 它產生了4次匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza? 每一次匹配都對應了一個lastName組:? 第1次匹配:lastName group=Seinfeld? 第2次匹配:lastName group=Benes? 第3次匹配:lastName group=Kramer? 第4次匹配:lastName group=Costanza? 不管是否設置了選項ExplictCapture,組都將被捕獲? (?=) 正聲明。聲明的右側必須是括號中指定的模式。此模式不構成最終匹配的一部分正則表達式\S+(?=.NET)要匹配的輸入字符串為:The languages were Java,C#.NET,VB.NET,C,Jscript.Net,Pascal? 將產生如下匹配:〕? C#? VB? JScript.? (?!) 負聲明。它規定模式不能緊臨著聲明的右側。此模式不構成最終匹配的一部分\d{3}(?![A-Z])要匹配的輸入字符串為:123A 456 789111C? 將產生如下匹配:? 456? 789? (?<=) 反向正聲明。聲明的左側必須為括號內的指定模式。此模式不構成最終匹配的一部分正則表達式(?<=New)([A-Z][a-z]+)要匹配的輸入字符串為:The following states,New Mexico,West Virginia,Washington, New England? 它將產生如下匹配:? Mexico? England? (?<!) 反向正聲明。聲明的左側必須不能是括號內的指定模式。此模式不構成最終匹配的一部分正則表達式(?<!1)\d{2}([A-Z])要匹配的輸入字符串如下:123A456F789C111A? 它將實現如下匹配:? 56F? 89C? (?>) 非回溯組。防止Regex引擎回溯并且防止實現一次匹配假設要匹配所有以“ing”結尾的單詞。輸入字符串如下:He was very trusing? 正則表達式為:.*ing? 它將實現一次匹配――單詞trusting。“.”匹配任意字符,當然也匹配“ing”。所以,Regex引擎回溯一位并在第2個“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing? 它將實現0次匹配。“.”能匹配所有的字符,包括“ing”――不能匹配,從而匹配失敗?
五. ? ? 決策字符? 字 符 描 述 舉 例? (?(regex)yes_regex|no_regex) 如果表達式regex匹配,那么將試圖匹配表達式yes。否則匹配表達式no。正則表達式no是可先參數。注意,作出決策的模式寬度為0.這意味著表達式yes或no將從與regex表達式相同的位置開始匹配正則表達式(?(\d)dA|A-Z)B)要匹配的輸入字符串為:1A CB3A5C 3B? 它實現的匹配是:? 1A? CB? 3A? (?(group name or number)yes_regex|no_regex) ?如果組中的正則表達式實現了匹配,那么試圖匹配yes正則表達式。否則,試圖匹配正則表達式no。no是可先的參數正則表達式? (\d7)?-(?(1)\d\d[A-Z]|[A-Z][A-Z]要匹配的輸入字符串為:? 77-77A 69-AA 57-B? 它實現的匹配為:? 77-77A? -AA? 注:上面表中列出的字符強迫處理器執行一次if-else決策?
六. ? ? 替換字符? 字 符 描 述? $group 用group指定的組號替換? ${name} 替換被一個(?<name>)組匹配的最后子串? $$ 替換一個字符$? $& 替換整個的匹配? $^ 替換輸入字符串匹配之前的所有文本? $’ 替換輸入字符串匹配之后的所有文本? $+ 替換最后捕獲的組? $_ 替換整個的輸入字符串? 注:以上為常用替換字符,不全?
七. ? ? 轉義序列? 字 符 描 述? \\ 匹配字符“\”? \. 匹配字符“.”? \* 匹配字符“*”? \+ 匹配字符“+”? \? 匹配字符“?”? \| 匹配字符“|”? \( 匹配字符“(”? \) 匹配字符“)”? \{ 匹配字符“{”? \} 匹配字符“}”? \^ 匹配字符“^”? \$ 匹配字符“$”? \n 匹配換行符? \r 匹配回車符? \t 匹配制表符? \v 匹配垂直制表符? \f 匹配換面符? \nnn 匹配一個8進數字,nnn指定的ASCII字符。如\103匹配大寫的C? \xnn 匹配一個16進數字,nn指定的ASCII字符。如\x43匹配大寫的C? \unnnn 匹配由4位16進數字(由nnnn表示)指定的Unicode字符? \cV 匹配一個控制字符,如\cV匹配Ctrl-V?
八. ? ? 選項標志? 選項標志 名 稱? I IgnoreCase? M Multiline? N ExplicitCapture? S SingleLine? X IgnorePatternWhitespace? 注:選項本身的信作含義如下表所示:? 標 志 名 稱? IgnoreCase 使模式匹配不區分大小寫。默認的選項是匹配區分大小寫? RightToLeft 從右到左搜索輸入字符串。默認是從左到右以符合英語等的閱讀習慣,但不符合阿拉伯語或希伯來語的閱讀習慣? None 不設置標志。這是默認選項? Multiline 指定^和$可以匹配行首和行尾,以及字符串的開始和結尾。這意味著可以匹配每個用換行符分隔的行。但是,字符“.”仍然不匹配換行符? SingleLine 規定特殊字符“.”匹配任意的字符,包括換行符。默認情況下,特殊字符“.”不匹配換行符。通常與MultiLine選項一起使用? ECMAScript. ECMA(European Coputer Manufacturer’s Association,歐洲計算機生產商協會)已經定義了正則表達式應該如何實現,而且已經在ECMAScript規范中實現,這是一個基于標準的JavaScript。這個選項只能與IgnoreCase和MultiLine標志一起使用。與其它任何標志一起使用,ECMAScript都將產生異常? IgnorePatternWhitespace 此選項從使用的正則表達式模式中刪除所有非轉義空白字符。它使表達式能跨越多行文本,但必須確保對模式中所有的空白進行轉義。如果設置了此選項,還可以使用“#”字符來注釋下則表達式? Complied 它把正則表達式編譯為更接近機器代碼的代碼。這樣速度快,但不允許對它進行任何修改?
oracle的正則表達式(regular expression)簡單介紹?
目前,正則表達式已經在很多軟件中得到廣泛的應用,包括*nix(Linux, Unix等),HP等操作系統,PHP,C#,Java等開發環境。?
Oracle 10g正則表達式提高了SQL靈活性。有效的解決了數據有效性, 重復詞的辨認, 無關的空白檢測,或者分解多個正則組成? 的字符串等問題。?
Oracle 10g支持正則表達式的四個新函數分別是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE。 它們使用POSIX 正則表達式代替了老的百分號(%)和通配符(_)字符。?
REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter)函數(10g新函數)? ? ?描述:字符串替換函數。相當于增強的replace函數。Source_string指定源字符表達式;pattern指定規則表達式;replace_string指定用于替換的字符串;position指定起始搜索位置;occurtence指定替換出現的第n個字符串;match_parameter指定默認匹配操作的文本串。? ? ?其中replace_string,position,occurtence,match_parameter參數都是可選的。?
REGEXP_SUBSTR(source_string, pattern[,position [, occurrence[, match_parameter]]])函數(10g新函數)? ? ? 描述:返回匹配模式的子字符串。相當于增強的substr函數。Source_string指定源字符表達式;pattern指定規則表達式;position指定起始搜索位置;occurtence指定替換出現的第n個字符串;match_parameter指定默認匹配操作的文本串。? ? ? 其中position,occurtence,match_parameter參數都是可選的? match_option的取值如下:? ‘c’ ? 說明在進行匹配時區分大小寫(缺省值);? ? 'i' ? 說明在進行匹配時不區分大小寫;? ? 'n' ? 允許使用可以匹配任意字符的操作符;? ? 'm' ? 將x作為一個包含多行的字符串。?
REGEXP_LIKE(source_string, pattern[, match_parameter])函數(10g新函數)? ? ? 描述:返回滿足匹配模式的字符串。相當于增強的like函數。Source_string指定源字符表達式;pattern指定規則表達式;match_parameter指定默認匹配操作的文本串。? ? ? 其中position,occurtence,match_parameter參數都是可選的?
REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])函數(10g新函數)? ? ? 描述: 該函數查找 pattern ,并返回該模式的第一個位置。您可以隨意指定您想要開始搜索的 start_position。 occurrence 參數默認為 1,除非您指定您要查找接下來出現的一個模式。return_option 的默認值為 0,它返回該模式的起始位置;值為 1 則返回符合匹配條件的下一個字符的起始位置?
特殊字符:? '^' 匹配輸入字符串的開始位置,在方括號表達式中使用,此時它表示不接受該字符集合。? '$' 匹配輸入字符串的結尾位置。如果設置了 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, bb, aa? '' 轉義符。?
字符簇:? [[:alpha:]] 任何字母。? [[:digit:]] 任何數字。? [[:alnum:]] 任何字母和數字。? [[:space:]] 任何白字符。? [[:upper:]] 任何大寫字母。? [[:lower:]] 任何小寫字母。? [[:punct:]] 任何標點符號。? [[:xdigit:]] 任何16進制的數字,相當于[0-9a-fA-F]。?
各種操作符的運算優先級? 轉義符? (), (?:), (?=), [] 圓括號和方括號? *, +, ?, {n}, {n,}, {n,m} 限定符? ^, $, anymetacharacter 位置和順序? | “或”操作?

轉載于:https://www.cnblogs.com/linbo3168/p/6016643.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python編程中的if __name__ == 'main': 的作用和原理[2]

這個問題來自于知乎用戶的提問&#xff0c;當時看到這個問題&#xff0c;我只是做了下簡單的回答。后來我發現&#xff0c;對于很多人來說&#xff0c;更準確的說應該是大部分的 Python 初學者&#xff0c;對這個問題理解的不是很深刻。所以這里我來做下總結&#xff0c;并試圖…

Java基礎中按值傳遞和引用傳遞詳解

下面是我在網上看到的一個帖子&#xff0c;解釋的感覺挺全面&#xff0c;就轉過來&#xff0c;以供以后學習參考&#xff1a; 1&#xff1a;按值傳遞是什么 指的是在方法調用時&#xff0c;傳遞的參數是按值的拷貝傳遞。示例如下&#xff1a; [java] view plaincopy public cla…

【Foreign】采蘑菇 [點分治]

采蘑菇 Time Limit: 20 Sec Memory Limit: 256 MBDescription Input Output Sample Input 51 2 3 2 31 21 32 42 5Sample Output 10912911HINT Main idea 詢問從以每個點為起始點時&#xff0c;各條路徑上的顏色種類的和。 Solution 我們看到題目&#xff0c;立馬想到了O(n^2)…

c語言迷宮游戲怎么存放坐標,求解迷宮問題(c語言,很詳細哦

《求解迷宮問題(c語言,很詳細哦》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《求解迷宮問題(c語言,很詳細哦(5頁珍藏版)》請在人人文庫網上搜索。1、求迷宮問題就是求出從入口到出口的路徑。在求解時 , 通常用的是 “窮舉求解”的方法 ,即從入口出發 ,順某一方向向…

模塊概述

概述 目前代碼比較少&#xff0c;寫在一個文件中還體現不出什么缺點&#xff0c;但是隨著代碼量越來越多&#xff0c; 代碼就越來越難以維護 為了解決難以維護的問題&#xff0c;我們把很多相似功能的函數分組&#xff0c;分別放到不同的文件中取。這樣每個文件所包含的內容相…

【MySQL】PREPARE 的應用

簡單的用set或者declare語句定義變量&#xff0c;然后直接作為sql的表名是不行的&#xff0c;mysql會把變量名當作表名。在其他的sql數據庫中也是如此&#xff0c;mssql的解決方法是將整條sql語句作為變量&#xff0c;其中穿插變量作為表名&#xff0c;然后用sp_executesql調用…

簡歷要求中“ 扎實的JAVA基礎”的學習方法

最近在頭條看到一篇關于Java基礎學習的文章&#xff0c;感覺寫的很不錯&#xff0c;分享一下&#xff0c;希望對大家有幫助 什么東西算作Java基礎&#xff1f;學到什么程度才算扎實&#xff1f; 這些問題的答案&#xff0c;LZ已經用文言文告訴你了&#xff0c;咳咳&#xff0c;…

C++11 tuple的使用

多少分轉載于:https://www.cnblogs.com/DswCnblog/p/6524832.html

c語言程序設計貪吃蛇需求分析,C語言編程新手入門基礎進階學習!貪吃蛇小游戲演示和說明...

C語言是面向過程的&#xff0c;而C&#xff0b;&#xff0b;是面向對象的設計貪吃蛇游戲的主要目的是讓大家夯實C語言基礎&#xff0c;訓練編程思維&#xff0c;培養解決問題的思路&#xff0c;領略多姿多彩的C語言。游戲開始后&#xff0c;會在中間位置出現一條只有三個節點的…

解決bash: mysql: command not found 的方法【linux mysql命令 】

linux下&#xff0c;在mysql正常運行的情況下&#xff0c;輸入mysql提示&#xff1a; mysql command not found 遇上-bash: mysql: command not found的情況別著急&#xff0c;這個是因為/usr/local/bin目錄下缺失mysql導致&#xff0c;只需要以下方法即可以解決&#xff1a; …

堆和棧的區別(經典干貨)

一、預備知識—程序的內存分配 一個由C/C編譯的程序占用的內存分為以下幾個部分 1、棧區&#xff08;stack&#xff09;— 由編譯器自動分配釋放 &#xff0c;存放函數的參數值&#xff0c;局部變量的值等。其 操作方式類似于 數據結構 中的棧。 2、堆區&#xff08;he…

Strus2中關于ValueStack詳解

什么是ValueStack 它是一個接口com.opensymphony.xwork2.util.ValueStack。我們使用它是將其做為一個容器&#xff0c;用于攜帶action數據到頁面。在頁面上通過ognl表達式獲取數據。 valueStack主要是將action數據攜帶到頁面上&#xff0c;通過ognl獲取數據 1.ValueStack有一個…

Airbnb React/JSX 編碼規范

Airbnb React/JSX 編碼規范算是最合理的React/JSX編碼規范之一了內容目錄基本規范Class vs React.createClass vs stateless命名聲明模塊代碼對齊單引號還是雙引號空格屬性Refs引用括號標簽函數/方法模塊生命周期isMountedBasic Rules 基本規范每個文件只寫一個模塊.但是多個無…

Mysql數據庫使用總結

mysql數據庫使用總結 本文主要記錄一些mysql日常使用的命令&#xff0c;供以后查詢。 1.更改root密碼 mysqladmin -uroot password yourpassword 2.遠程登陸mysql服務器 mysql -uroot -p -h192.168.137.10 -P3306 3.查詢數據庫 show databases; 4.進入某個數據庫 use databa…

c語言遞歸漢諾塔次數,漢諾塔問題(C語言經典遞歸問題(一))

把A桿上的金盤全部移到C桿上&#xff0c;并仍保持原有順序疊好。操作規則&#xff1a;每次只能移動一個盤子&#xff0c;并且在移動過程中三根桿上都始終保持大盤在下&#xff0c;小盤在上&#xff0c;操作過程中盤子可以置于A、B、C任一桿上。思路&#xff1a;圖解&#xff1a…

Eclipes導入的項目中的中文都是亂碼的解決辦法

把項目導入Eclipse時&#xff0c;里邊的中文全是亂碼&#xff0c;試了很多方法&#xff0c;最終總結一下&#xff01; eclipse之所以會出現亂碼問題是因為eclipse編輯器選擇的編碼規則是可變的。一般默認都是UTF-8或者GBK&#xff0c;當從外部導入的一個工程時&#xff0c;如果…

理解瀏覽器是如何加載及渲染網頁的

先上圖&#xff0c;我們再慢慢解釋&#xff0c;這圖就是瀏覽器加載網頁的一個過程 當我們在瀏覽器輸入一個地址&#xff08;比如:http://toadw.cn&#xff09;,那么點擊回車后&#xff0c;瀏覽器是如何加載網頁的呢&#xff1f; 加載過程 一開始瀏覽器是不知道你輸入的http://t…

CentOS下的Mysql的安裝和使用

1.使用安裝命令 &#xff1a;yum -y install mysql mysql-server mysql-devel 安裝完成卻發現Myserver安裝缺失&#xff0c;在網上找原因&#xff0c;原來是因為CentOS 7上把MySQL從默認軟件列表中移除了&#xff0c;用MariaDB來代替&#xff0c;所以這導致我們必須要去官網上…

NOIP模擬題——神秘大門

【題目描述】最近小K大牛經過調查發現&#xff0c;在WZland的最南方——WZ Antarctica 出現了奇怪的磁場反應。為了弄清楚這一現象&#xff0c;小K 大牛親自出馬&#xff0c;來到了WZ Antarctica。小K大牛發現WZ Antarctica 出現了一道神秘的大門。人總有好奇心&#xff0c;小K…

大學c語言程序設計大賽,關于舉辦寧夏大學第二屆C語言程序設計大賽的通知

各學院&#xff1a;根據學校《關于進一步加強基礎課教學改革的意見》(寧大校發〔2008〕178號)、《關于加強學生創新精神和創新能力培養的實施意見》(寧大校發〔2008〕75號)的有關文件精神&#xff0c;經研究決定舉辦寧夏大學第二屆C語言程序設計大賽&#xff0c;從中選拔出優秀…