主頁 > 知識庫 > 數據庫 > Oracle >

Oracle 正則表達式的問題

來源:中國IT實驗室 作者:佚名 發表于:2013-07-18 15:26  點擊:
正則表達式只是搜索,替換,格式化等功能,格式化一般用后向引用,沒有計算length和concatenate(連接串聯)的。 答案:CDE Oracle Database 10g中的正規表達式特性是一個用于處理文本數據的強大工具 Oracle Database 10g的一個新特性大大提高了您搜索和處理字

 
    正則表達式只是搜索,替換,格式化等功能,格式化一般用后向引用,沒有計算length和concatenate(連接串聯)的。
    
    答案:CDE
    
    Oracle Database 10g中的正規表達式特性是一個用于處理文本數據的強大工具
    Oracle Database 10g的一個新特性大大提高了您搜索和處理字符數據的能力。這個特性就是正規表達式,是一種用來描述文本模式的表示方法。很久以來它已在許多編程語言和大量 UNIX 實用工具中出現過了。
    Oracle 的正規表達式的實施是以各種 SQL 函數和一個WHERE子句操作符的形式出現的。如果您不熟悉正規表達式,那么這篇文章可以讓您了解一下這種新的極其強大然而表面上有點神秘的功能。已經對 正規表達式很熟悉的讀者可以了解如何在 Oracle SQL 語言的環境中應用這種功能。
    什么是正規表達式?
    正規表達式由一個或多個字符型文字和/或元字符組成。在最簡單的格式下,正規表達式僅由字符文字組成,如正規表達式cat。它被讀作字母c,接著是字母a 和t,這種模式匹配cat、location和catalog之類的字符串。元字符提供算法來確定 Oracle 如何處理組成一個正規表達式的字符。當您了解了各種元字符的含義時,您將體會到正規表達式用于查找和替換特定的文本數據是非常強大的。
    驗證數據、識別重復關鍵字的出現、檢測不必要的空格,或分析字符串只是正規表達式的許多應用中的一部分。您可以用它們來驗證電話號碼、郵政編碼、電子郵件地址、社會安全號碼、IP 地址、文件名和路徑名等的格式。此外,您可以查找如 HTML 標記、數字、日期之類的模式,或任意文本數據中符合任意模式的任何事物,并用其它的模式來替換它們。
    用 Oracle Database 10g 使用正規表達式
    您可以使用最新引進的 Oracle SQL REGEXP_LIKE操作符和REGEXP_INSTR、REGEXP_SUBSTR以及REGEXP_REPLACE函數來發揮正規表達式的作用。您 將體會到這個新的功能如何對LIKE操作符和INSTR、SUBSTR和REPLACE函數進行了補充。實際上,它們類似于已有的操作符,但現在增加了強 大的模式匹配功能。被搜索的數據可以是簡單的字符串或是存儲在數據庫字符列中的大量文本。正規表達式讓您能夠以一種您以前從未想過的方式來搜索、替換和驗證數據,并提供高度的靈活性。
    正規表達式的基本例子
    在使用這個新功能之前,您需要了解一些元字符的含義。句號 (.) 匹配一個正規表達式中的任意字符(除了換行符)。例如,正規表達式a.b匹配的字符串中首先包含字母a,接著是其它任意單個字符(除了換行符),再接著是 字母b。字符串axb、xaybx和abba都與之匹配,因為在字符串中隱藏了這種模式。如果您想要精確地匹配以a開頭和以b結尾的一條三個字母的字符 串,則您必須對正規表達式進行定位。脫字符號 (^) 元字符指示一行的開始,而美元符號 ($) 指示一行的結尾(參見表 1)。因此,正規表達式^a.b$匹配字符串aab、abb或axb。將這種方式與LIKE 2ù×÷·?提供的類似的模式匹配a_b相比較,其中 (_) 是單字符通配符。
    默認情況下,一個正規表達式中的一個單獨的字符或字符列表只匹配一次。為了指示在一個正規表達式中多次出現的一個字符,您可以使用一個量詞,它也被稱為重 復操作符。.如果您想要得到從字母a開始并以字母b結束的匹配模式,則您的正規表達式看起來像這樣:^a.*b$。*元字符重復前面的元字符 (.) 指示的匹配零次、一次或更多次。LIKE操作符的等價的模式是a%b,其中用百分號 (%) 來指示任意字符出現零次、一次或多次。
    表 2給出了重復操作符的完整列表。注意它包含了特殊的重復選項,它們實現了比現有的LIKE通配符更大的靈活性。如果您用圓括號括住一個表達式,這將有效地 創建一個可以重復一定次數的子表達式。例如,正規表達式b(an)*a匹配ba、bana、banana、yourbananasplit等。
    Oracle 的正規表達式實施支持 POSIX (可移植操作系統接口)字符類,參見表 3中列出的內容。這意味著您要查找的字符類型可以非常特別。假設您要編寫一條僅查找非字母字符的LIKE條件 — 作為結果的WHERE子句可能不經意就會變得非常復雜。
    POSIX 字符類必須包含在一個由方括號 ([]) 指示的字符列表中。例如,正規表達式[[:lower:]]匹配一個小寫字母字符,而[[:lower:]]{5}匹配五個連續的小寫字母字符。
    除 POSIX 字符類之外,您可以將單獨的字符放在一個字符列表中。例如,正規表達式^ab[cd]ef$匹配字符串abcef和abdef。必須選擇c或d。
    除脫字符 (^) 和連字符 (-) 之外,字符列表中的大多數元字符被認為是文字。正規表達式看起來很復雜,這是因為一些元字符具有隨上下文環境而定的多重含義。^就是這樣一種元字符。如果 您用它作為一個字符列表的第一個字符,它代表一個字符列表的非。因此,[^[:digit:]]查找包含了任意非數字字符的模式,而 ^[[:digit:]]查找以數字開始的匹配模式。連字符 (-) 指示一個范圍,正規表達式[a-m]匹配字母a到字母m之間的任意字母。但如果它是一個字符行中的第一個字符(如在[-afg] 中),則它就代表連字符。

有幫助
(0)
0%
沒幫助
(0)
0%
31选7什么时候开奖