oracle中的Regex(regular expression)

來源:互聯網
上載者:User

Regex是很多程式設計語言中都有的。可惜oracle8i、oracle9i中一直遲遲不肯加入,好在oracle10g中終於增加了期盼已久的Regex功能。你可以在oracle10g中使用Regex肆意地匹配你想匹配的任何字串了。

所謂Regex是對於字串進行匹配的一種模式。舉個例子來說字串’^198[0-9]$’可以匹配‘1980-1989’,也即80後出生的年份。如果希望統計出公司那些員工是80後的,就可以使用如下的SQL語句:
select * from emp where regexp_like(to_char(birthdate,’yyyy’),’^198[0-9]$’);

這裡用到了regexp_like和to_char函數。

這裡在Regex中用到的^、$、[0-9]都被稱為中繼資料(metacharacter),Regex都是由多元運算式組成的。在這裡,^表示一個字串的開頭,$表示一個字元換的結尾,因此^198表示以198開頭的字串,而[0-9]$則表示以0-9的數字結尾的字串。因此整體上’^198[0-9]$’就能匹配所有1980-1989的字串。

Regex中常用到的中繼資料(metacharacter)如下:

  1. ^  匹配字串的開頭位置。
  2. $  匹配支付傳的結尾位置。
  3. *  匹配該字元前面的一個字元0次,1次或者多次出現。例如52*oracle 可以匹配 5oracle,52oracle,522oracle,5222oracle等等。
  4. + 匹配該字元前面的一個字元1次或者多次出現。例如52+oracle 可以匹配 52oracle,522oracle,5222oracle等等
  5. ?  匹配該字元前面的一個字元0次或1次或者多次出現。例如52?oracle 只能匹配5oracle,52oracle等等
  6. {n} 匹配一個字串n次,n為正整數。例如:hel{2}o 所匹配的是hello
  7. {n,m} 匹配一個字串至少n次,至多m次。其中n和m都是整數。
  8. .  匹配除了null之外的任何單個字串
  9. (pattern) 這個是用來匹配指定模式的一個子運算式
  10. x|y  匹配x或者y,其中x和y是一個或者多個字元
  11. [abc] 匹配括弧中的任意一個字元。例如:[ab]bc可以匹配abc和bbc
  12. [a-z] 匹配指定範圍內的任一字元串。例如[A-G]hi可以匹配Ahi至Ghi
  13. [::]指定一個字元類,可以匹配該類中的任一字元 這裡的字元類包括:
    • [:alphanum:] 可以匹配字元0-9、A-Z、a-z
    • [:alpha:]可以匹配字元A-Z、a-z
    • [:blank:]可以匹配空格或者tab鍵
    • [:digit:]可以匹配數字 0-9
    • [:gragh:]可以匹配非Null 字元
    • [:punct:]可以匹配. , ” ‘等標點符號。
    • [:upper:]可以匹配字元A-Z
    • [:lower:]可以匹配字元a-z

這裡列出的是一些常見的Regex中的中繼資料。更多的Regex的內容請參照oracle官網上的Regex的相關內容

關於orace中的Regex只能通過oracle特意為Regex設計的4個函數來使用。這4個函數分別是:
regexp_like,regexp_instr,regexp_replace,regexp_substr。關於這4個函數的具體用法,會在稍後介紹,這裡簡單說一下:

  1. regexp_like(x,pattern)當x能正確匹配字串時返回true。
  2. regexp_instr(x,pattern)在x中嘗試匹配pattern,並返回匹配的位置。
  3. regexp_replace(x,pattern,replacestring)在x中嘗試匹配pattern,並將其替換成replacestring。
  4. regexp_substr(x,pattern)返回x中匹配pattern的一個字串。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.