正規表示式
使用 regexp 操作符來進行正規表示式匹配
例項了解以上的正則需求後,我們就可以根據自己的需求來編寫帶有正規表示式的sql語句。以下我們將列出幾個小例項(表名:person_tbl )來加深我們的理解:
查詢name欄位中以'st'為開頭的所有資料:
mysql> select name from person_tbl where name regexp '
^st';
查詢name欄位中以'ok'為結尾的所有資料:
mysql> select name from person_tbl where name regexp '
ok$';
查詢name欄位中包含'mar'字串的所有資料:
mysql> select name from person_tbl where name regexp '
mar';
查詢name欄位中以母音字元開頭或以'ok'字串結尾的所有資料: -- 試過了,這個合併的語法好像行不通
mysql> select name from person_tbl where name regexp '
^[aeiou]|ok$';
^ 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。
$ 匹配輸入字串的結束位置。如果設定了regexp 物件的 multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
. 匹配除 "\n" 之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用象 '[.\n]' 的模式。
[...] 字元集合。匹配所包含的任意乙個字元。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...] 負值字元集合。匹配未包含的任意字元。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
* 匹配前面的子表示式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於。
+ 匹配前面的子表示式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 。
n 是乙個非負整數。匹配確定的 n 次。例如,'o' 不能匹配 "bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。
mysql的轉義字元'\\'
需要轉義的字元有:
$ 匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 『\n' 或 『\r'。要匹配 $ 字元本身,請使用 \$。
( ) 標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 和和。
* 匹配前面的子表示式零次或多次。要匹配 * 字元,請使用 \*。
+ 匹配前面的子表示式一次或多次。要匹配 + 字元,請使用 \+。
. 匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \。
[ ] 標記乙個中括號表示式的開始。要匹配 [,請使用 \[。
? 匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符。要匹配 ? 字元,請使用 \?。
\ 將下乙個字元標記為或特殊字元、或原義字元、或向後引用、或八進位制轉義符。例如, 『n' 匹配字元 『n'。'\n' 匹配換行符。序列 『\\' 匹配 「\」,而 『\(' 則匹配 「(」。
^ 匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 \^。
標記限定符表示式的開始。要匹配 {,請使用 \{。
| 指明兩項之間的乙個選擇。要匹配 |,請使用 \|。
mysql正規表示式 MySQL正規表示式
正規表示式是為複雜搜尋指定模式的強大方式。正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello匹配hello。非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串匹配。例如,正規表示式hello word匹配字串hello或字串w...
正規表示式 2
例 正規表示式物件 本物件包含正規表示式模式以及表明如何應用模式的標誌。語法 1 re pattern flags 語法 2 re new regexp pattern flags 引數 re 必選項。將要賦值為正規表示式模式的變數名。pattern 必選項。要使用的正規表示式模式。如果使用語法 1...
正規表示式2
本文參照python 核心程式設計第一章正規表示式 1 match函式的使用 import re m re.match foo foo if m is not none print m.group match 如果匹配成功,返回乙個匹配物件,不成功則返回none 如果我們不使用if判斷就使用m.gr...