屬性名 regexp ‘匹配方式'
10年積累的成都網(wǎng)站設(shè)計、做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有甘井子免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
正則表達(dá)式的模式字符
^ 匹配字符開始的部分
eg1: 從info表name字段中查詢以L開頭的記錄
select * from info where name regexp '^L';
eg2: 從info表name字段中查詢以aaa開頭的記錄
select * from info where name regexp '^aaa';
$ 匹配字符結(jié)束的部分
eg1: 從info表name字段中查詢以c結(jié)尾的記錄
select * from info where name regexp 'c$';
eg2: 從info表name字段中查詢以aaa結(jié)尾的記錄
select * from info where name regexp 'aaa$';
. 匹配字符串中的任意一個字符,包括回車和換行
eg1: 從info表name字段中查詢以L開頭y結(jié)尾中間有兩個任意字符的記錄
select * from info where name regexp '^L..y$';
[字符集合]匹配字符集合中的任意字符
eg1: 從info表name字段中查詢包含c、e、o三個字母中任意一個的記錄
select * from info where name regexp '[ceo]';
eg2: 從info表name字段中查詢包含數(shù)字的記錄
select * from info where name regexp '[0-9]';
eg3: 從info表name字段中查詢包含數(shù)字或a、b、c三個字母中任意一個的記錄
select * from info where name regexp '[0-9a-c]';
[^字符集合]匹配除了字符集合外的任意字符
eg1: 從info表name字段中查詢包含a-w字母和數(shù)字以外字符的記錄
select * from info where name regexp '[^a-w0-9]';
s1|s2|s3 匹配s1s2s3中的任意一個
eg1: 從info表name字段中查詢包含'ic'的記錄
select * from info where name regexp 'ic';
eg2: 從info表name字段中查詢包含ic、uc、ab三個字符串中任意一個的記錄
select * from info where name regexp 'ic|uc|ab';
* 代表多個該字符前的字符,包括0個或1個
eg1: 從info表name字段中查詢c之前出現(xiàn)過a的記錄
select * from info where name regexp 'a*c';
+ 代表多個該字符前的字符,包括1個
eg1: 從info表name字段中查詢c之前出現(xiàn)過a的記錄
select * from info where name regexp 'a+c';(注意比較結(jié)果!)
字符串{N} 字符串出現(xiàn)N次
eg1: 從info表name字段中查詢出現(xiàn)過a3次的記錄
select * from info where name regexp 'a{3}';
字符串{M,N}字符串最少出現(xiàn)M次,最多出現(xiàn)N次
eg1: 從info表name字段中查詢ab出現(xiàn)最少1次最多3次的記錄
select * from info where name regexp 'ab{1,3}';
MYSQL中自帶通配符(LIKE關(guān)鍵詞)
%可以表示任意長度的字符(包括0)
-可以表示單個字符
[]表示的是范圍,就是說只匹配里面的單個字符或范圍,同樣的字符寫多次和寫一次效果一樣
如果是一般情況,可以用(?!55)$或者(?!55)$匹配,但是mysql數(shù)據(jù)庫不支持這些非獲取匹配的寫法,所以還是用not regexp '55$'來篩選吧
mysql的正則匹配用regexp,而替換字符串用REPLACE(str,from_str,to_str)例如UPDATE myTable SET HTML=REPLACE(HTML,'','') WHERE HTML REGEXP '( */*\s*){2,}'
可是這么寫會把所有全部替換掉,因此干脆把REPLACE(HTML,'','')改成REPLACE(HTML,substr(HTML,locate('',HTML)+strlen(''),strlen('')),'')
這還不夠,還得手動寫多個''、'///',
還不夠,還得循環(huán)數(shù)次這些命令。。。。
關(guān)鍵的是,SQL語句無法實現(xiàn)正則匹配后取其中一部分的字符串來替換,所以你這里用sql實現(xiàn)是異常蛋疼的,干脆在程序里做正則替換,然后update吧。
\w是匹配[a-zA-Z0-9] . ? 匹配一個或者0個前面的字符,* 匹配前面0個或者多個字符。
所以這個正則表達(dá)式匹配前面具有數(shù)字或者字母開頭的,中間為word,后面為數(shù)字或者字母結(jié)尾的字符串。開頭和結(jié)尾不能同時出現(xiàn)字母和數(shù)字。
以下幾個例子可匹配:
11111111111wordcccccccccccccccccc
aaaaaaaaaaawordxxxxxxxxxxxxxxxxxx