當前位置:首頁 >  站長 >  編程技術 >  正文

SQL Anywhere正則表達式語法與示例

 2020-11-24 14:49  來源: 腳本之家   我來投稿 撤稿糾錯

  域名預訂/競價,好“米”不錯過

這篇文章主要介紹了SQL Anywhere正則表達式語法與示例,需要的朋友可以參考下

正則表達式語法

通過 SIMILAR TO 和 REGEXP 搜索條件以及 REGEXP_SUBSTR 函數支持正則表達式。對于 SIMILAR TO,正則表達式語法符合 ANSI/ISO SQL 標準。對于 REGEXP 和 REGEXP_SUBSTR,正則表達式的語法和支持符合 Perl 5。

REGEXP 和 SIMILAR TO 使用正則表達式是與字符串 相匹配,而 REGEXP_SUBSTR 使用正則表達式則是與子串 相匹配。要實現 REGEXP 和 SIMILAR TO 的子串匹配行為,可在要嘗試匹配的模式的任何一側指定通配符。例如,REGEXP '.*car.*' 會與 car、carwash 和 vicar 匹配?;蛘撸芍貙懖樵円允褂?REGEXP_SUBSTR 函數。請參見REGEXP_SUBSTR 函數 [String]。

通過 SIMILAR TO 匹配的正則表達式不區(qū)分大小寫,也不區(qū)分重音。REGEXP 和 REGEXP_SUBSTR 不受數據庫區(qū)分重音和大小寫的影響。請參見LIKE、REGEXP 和 SIMILAR TO:字符比較上的差異。

正則表達式:元字符

元字符是在正則表達式中具有特殊含義的符號或字符。

元字符的處理視以下情況而異:

正則表達式是與 SIMILAR TO 或 REGEXP 搜索條件一起使用,還是與 REGEXP_SUBSTR 函數一起使用

元字符是否在正則表達式的字符類的內部

在繼續(xù)之前,應了解字符類的定義。字符類是一組括在方括號內的字符,將根據這組字符對字符串中的字符進行匹配。例如,在 SIMILAR TO 'ab[1-9]' 語法中,[1-9] 就是一個字符類,它與 1 到 9 范圍中(包括 1 和 9)的某一數字匹配。正則表達式中元字符的處理方式各不相同,這取決于元字符是否被放在字符類的內部。具體來說,當元字符放在字符類的內部時,多數元字符作為常規(guī)字符來處理。

對于 SIMILAR TO(僅限于 SIMILAR TO),元字符 *、?、+、_、|、(、)、{ 必須在字符類內進行轉義。

要在字符類中包括減號 (-)、脫字符 (^) 或直角方括號 (]) 字符,必須將字符轉義。

下面給出了所支持的正則表達式元字符的列表。當 SIMILAR TO、REGEXP 和 REGEXP_SUBSTR 使用元字符時,幾乎所有元字符的處理方式都相同:

正則表達式:特殊子字符類

子字符類 是嵌入到較大字符類中的特殊字符類。除了自定義字符類(在其中定義要匹配的字符集,例如,[abxq4]將匹配字符集限制為 a、b、x、q 和 4)以外,SQL Anywhere 還支持子字符類,例如,大部分 POSIX 字符類。例如,[[:alpha:]] 表示所有大寫和小寫字母的集合。

REGEXP 搜索條件和 REGEXP_SUBSTR 函數支持下表中的所有語法約定,但 SIMILAR TO 搜索表達式不支持。SIMILAR TO 支持的約定在 SIMILAR TO 列中有一個 Y。

在 REGEXP 中,當使用 REGEXP_SUBSTR 函數時,可以使用脫字符對子字符類取非。例如,[[:^alpha:]] 匹配除字母字符以外的所有字符的集合。

正則表達式:斷言

斷言測試條件是否為真,并影響字符串中開始匹配的位置。斷言不返回字符;最終匹配中不包括斷言模式。REGEXP 搜索條件和 REGEXP_SUBSTR 函數支持這些斷言模式。而 SIMILAR TO 搜索表達式不支持這些約定。

在嘗試拆分字符串時,lookahead 和 lookbehind 斷言對于 REGEXP_SUBSTR 將非常有用。例如,您可以通過執(zhí)行以下語句返回 Customers 表的 Address 列中街道名稱(不帶街道編號)的列表:

SELECT REGEXP_SUBSTR( Street, '(?<=^\\S+\\s+).*$' )

FROM Customers;

另一個示例:假定您想要使用正則表達式來驗證口令是否符合某些規(guī)則。您可以使用類似于下面內容的零寬度斷言:

IF password REGEXP '(?=.*[[:digit:]])(?=.*[[:alpha:]].*[[:alpha:]])[[:word:]]{4,12}'

MESSAGE 'Password conforms' TO CLIENT;

ELSE

MESSAGE 'Password does not conform' TO CLIENT;

END IF

當滿足以下條件時,口令有效:

password 至少有一位數(零寬度肯定斷言 [[:digit:]])

password 至少有兩個字母字符(零寬度肯定斷言 [[:alpha:]].*[[:alpha:]])

password 只含有字母數字字符或下劃線字符 ([[:word:]])

password 最少含有 4 個字符,最多含有 12 個字符 ({4,12})

下表包含 SQL Anywhere 支持的斷言:

正則表達式示例

下表顯示正則表達式的使用示例。所有示例都適用于 REGEXP,部分示例也適用于 SIMILAR TO(如[示例]列中注釋)。結果視您用于搜索的搜索條件而異。對于使用 SIMILAR TO 的示例,結果還要另外根據是否區(qū)分大小寫和重音而異。

有關 REGEXP 和 SIMILAR TO 如何處理匹配和計算范圍的比較,請參見LIKE、REGEXP 和 SIMILAR TO 搜索條件。

請注意,如果在文字字符串中使用這些示例(例如,'.+@.+\\..+'),則應使用雙反斜線

到此這篇關于SQL Anywhere正則表達式語法與示例的文章就介紹到這了,更多相關SQL Anywhere正則表達式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

來源:腳本之家

鏈接:https://www.jb51.net/article/184178.htm

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關標簽
正則表達式

相關文章

熱門排行

信息推薦