Oracle的REGEXP_INSTR函數簡單用法

來源:互聯網
上載者:User

標籤:

REGEXP_INSTR函數讓你搜尋一個Regex模式字串。函數使用輸入字元集定義的字元進行字串的計算。

它返回一個整數,指示開始或結束匹配的子位置,這取決於return_option參數的值。如果沒有找到匹配,則函數返回0。

文法

Oracle資料庫中的REGEXP_INSTR函數的文法是:

REGEXP_INSTR (source_char, pattern [, position [, occurrence [, return_option [, match_parameter ] ] ]  ] )
參數 source_char

搜尋值的字元運算式,可以是任何資料類型CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB的。

pattern

Regex

Value Description
^ Matches the beginning of a string. If used with a match_parameter of ‘m’, it matches the start of a line anywhere within expression.
$ Matches the end of a string. If used with a match_parameter of ‘m’, it matches the end of a line anywhere within expression.
* 匹配零個或多個.
+ 匹配一個或多個出現.
? 匹配零次或一次出現.
. 匹配任何字元,除了空.
| Used like an "OR" to specify more than one alternative.
[ ] Used to specify a matching list where you are trying to match any one of the characters in the list.
[^ ] Used to specify a nonmatching list where you are trying to match any character except for the ones in the list.
( ) Used to group expressions as a subexpression.
{m} Matches m times.
{m,} Matches at least m times.
{m,n} Matches at least m times, but no more than n times.
\n n is a number between 1 and 9. Matches the nth subexpression found within ( ) before encountering \n.
[..] Matches one collation element that can be more than one character.
[::] Matches character classes.
[==] Matches equivalence classes.
\d 匹配一個數字字元.
\D 匹配一個非數字字元.
\w 匹配包括底線的任何單詞字元.
\W 匹配任何非單詞字元.
\s 匹配任何空白字元,包括空格、定位字元、換頁符等等.
\S 匹配任何非空白字元.
\A Matches the beginning of a string or matches at the end of a string before a newline character.
\Z Matches at the end of a string.
*? Matches the preceding pattern zero or more occurrences.
+? Matches the preceding pattern one or more occurrences.
?? Matches the preceding pattern zero or one occurrence.
{n}? Matches the preceding pattern n times.
{n,}? Matches the preceding pattern at least n times.
{n,m}? Matches the preceding pattern at least n times, but not more than m times.
position

可選。搜尋在字串中的開始位置。如果省略,則預設為1,這是字串中的第一個位置。

occurrence

可選。它是模式字串中的第n個匹配位置。如果省略,預設為1。

return_option

可選 指定Oracle返回的位置:

如果指定0,那麼Oracle將返回出現的第一個字元的位置。這是預設的。

如果指定1,則Oracle返回字元之後發生的位置。

match_parameter

可選。它允許你修改REGEXP_INSTR功能匹配的行為。它可以是以下的組合:

Value Description
‘c’ 區分大小寫匹配.
‘i’ 不區分大小寫匹配.
‘n’ Allows the period character (.) to match the newline character. By default, the period is a wildcard.
‘m’ expression is assumed to have multiple lines, where ^ is the start of a line and $ is the end of a line, regardless of the position of those characters in expression. By default, expression is assumed to be a single line.
‘x’ Whitespace characters are ignored. By default, whitespace characters are matched like any other character.
Examples 匹配單個字元

下面看一個最簡單的情況,找到字串中的第一個”e”字的位置。

SELECT REGEXP_INSTR (‘hello itmyhome‘, ‘e‘)FROM dual; -- Result: 2

下面這個例子給出一個字串, “1”為開始位置 “2”是搜尋第二個匹配的,”0”是return_option 返回出現的第一個字元位置

“c”是區分大小寫 ,所以將返回13

SELECT REGEXP_INSTR (‘my is itMyhome‘, ‘m‘, 1, 2, 0, ‘c‘)FROM dual; -- Result: 13
Examples 匹配多個字元

我們將使用REGEXP_INSTR函數來匹配多字元模式。

SELECT REGEXP_INSTR (‘World filled with love‘, ‘with‘, 1, 1, 0, ‘i‘)FROM dual;

這個例子將字串中返回’with’的第一次出現,它將匹配一個片語。

我們可以改變搜尋的開始位置,以便我們執行搜尋從字串的中間開始。

For example:

SELECT REGEXP_INSTR (‘my name is itmyhome‘, ‘my‘, 10, 1, 0, ‘i‘)FROM dual;

這個例子將開始搜尋”my”在字串中的位置10。在這種情況下,在搜尋之前,它會跳過字串中的前9個字元。

Examples 匹配多個備選

下面的例子,我們將使用 | 模式。該|模式用於像一個”或”指定多個替代方案。

For example:

SELECT REGEXP_INSTR (‘Itmyhome‘, ‘a|i|o|e|u‘)FROM dual;-- Result: 6

這個例子將返回6,因為它是搜尋的第一個母音(a,i,o,e或u)字串。由於我們沒有指定match_parameter值時,

REGEXP_INSTR函數將執行區分大小寫搜尋,這意味著在”Itmyhome”的’I’將不匹配。


itmyhome

Oracle的REGEXP_INSTR函數簡單用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.