国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL】不允許你不會用正則表達式進行搜索

這篇具有很好參考價值的文章主要介紹了【MySQL】不允許你不會用正則表達式進行搜索。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?? 博客主頁:博主鏈接
?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN??
?? 學(xué)習(xí)專欄推薦:LeetCode刷題集!
?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
?? 未來很長,值得我們?nèi)Ρ几案篮玫纳?

【MySQL】不允許你不會用正則表達式進行搜索
【MySQL】不允許你不會用正則表達式進行搜索

??MySQL的前情介紹

??大家好呀,今天是我第N次寫MySQL,也是最近才學(xué)習(xí)MySQL,也想著記錄一下自己的學(xué)習(xí)過程,并且分享給大家尼!

??本章詳情

??本文章將學(xué)習(xí)如何在MySQL WHERE子句內(nèi)使用正則表達式來更好地控制數(shù)據(jù)過濾。

??正則表達式介紹

前言

  1. ??在前兩篇文章中的過濾例子允許用匹配、比較和通配操作符尋找數(shù)據(jù)。對于基本的過濾(或者甚至是某些不那么基本的過濾),這樣就足夠了。但隨著過濾條件的復(fù)雜性的增加,WHERE子句本身的復(fù)雜性也有必要增加。
  2. ??這也就是正則表達式變得有用的地方。正則表達式是用來匹配文本的特殊的串(字符集合)。如果你想從一個文本文件中提取電話號碼,可以使用正則表達式。如果你需要查找名字中間有數(shù)字的所有文件,可以使用一個正則表達式。如果你想在一個文本塊中找到所有重復(fù)的單詞,可以使用一個正則表達式。如果你想替換一個頁面中的所有URL為這些URL的實際HTML鏈接也可以使用一個正則表達式(對于最后這個例子或者是兩個正則表達式)。
  3. ??所有種類的程序設(shè)計語言、文本編輯器、操作系統(tǒng)等都支持正則表達式。有見識的程序員和網(wǎng)絡(luò)管理員已經(jīng)關(guān)注作為他們技術(shù)工具重要內(nèi)容的正則表達式很長時間了。
  4. ??正則表達式用正則表達式語言來建立,正則表達式語言是用來完成剛討論的所有工作以及更多工作的一種特殊語言。與任意語言一樣,正則表達式具有你必須學(xué)習(xí)的特殊的語法和指令。

??使用MySQL正則表達式

??那么,正則表達式與MySQL有何關(guān)系?在上述前言已經(jīng)說過,正則表達式的作用是匹配文本,將一個模式(正則表達式)與一個文本串進行比較。MySQL用WHERE子句對正則表達式提供了初步的支持,允許你指定正則表達式過濾SELECT檢索出的數(shù)據(jù)

僅為正則表達式語言的一個子集

??如果你熟悉正則表達式,需要注意:MySOL僅支持多數(shù)正則表達式實現(xiàn)的一個很小的子集。本章介紹MySOL支持的大多數(shù)內(nèi)容。

舉例子分析

?? 我們從一個非常簡單的例子開始。下面的語句檢索列prod_name包含文本1000的所有行:

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '1000'
		ORDER BY prod_name;

分析

??除關(guān)鍵字LIKE被REGEXP替代外,這條語看上去非常像使用LIKE的語句。它告訴MySQL: REGEXP后所跟的東西作為正則表達式**(與文字正文1000匹配的一個正則表達式)**處理。

輸出
【MySQL】不允許你不會用正則表達式進行搜索

??**為什么要費力地使用正則表達式?**在剛才的例子中,正則表達式確實沒有帶來太多好處(可能還會降低性能),不過,請考慮下面的例子:

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '.000'
		ORDER BY prod_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索
分析

這里使用了正則表達式.000。.是正則表達式語言中一個特殊的字符。它表示匹配任意一個字符,因此,1000和2000都匹配且返回

匹配不區(qū)分大小寫

MySQL中的正則表達式匹配(自版本3.23.4后)不區(qū)分大小寫(即,大寫和小寫都匹配)為區(qū)分大小寫,可使用BINARY關(guān)鍵字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’

??進行OR匹配

搜索兩個串之一(或者為這個串,或者為另一個串),使用|,如下所示:

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '1000|2000'
		ORDER BY prod_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索
分析

語句中使用了正則表達式1000|2000。|為正則表達式的OR操作符。它表示匹配其中之一,因此1000和2000都匹配并返回

注意

??使用|從功能上類似于在SELECT語句中使用OR語句,多個OR條件可并入單個正則表達式。

兩個以上的OR條件

例如兩個以上的OR條件1000 | 2000 | 3000將匹配1000或2000或3000

??匹配幾個字符之一

匹配任何單一字符。但是,如果你只想匹配特定的字符,怎么辦?可通過指定一組用[和]括起來的字符來完成,如下所示:

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '[123] Ton'
		ORDER BY prod_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索
分析

這里,使用了正則表達式[123] Ton。[123]定義一組字符它的意思是匹配1或2或3,因此,1 ton和2 ton都匹配且返回(沒有3 ton)。

正如所見,[]是另一種形式的OR語句。事實上,正則表達式[123]Ton為[1|2|3]Ton的縮寫,也可以使用后者。但是,需要用[]來定義OR語句查找什么。為更好地理解這一點,請看下面的例子:

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '1|2|3 Ton'
		ORDER BY prod_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索
分析

這并不是期望的輸出。兩個要求的行被檢索出來,但還檢索出了另外3行。之所以這樣是由于MySQL假定你的意思是1或2或3 ton’。除非把字符1括在一個集合中,否則它將應(yīng)用于整個串

字符集合也可以被否定,即,它們將匹配除指定字符外的任何東西為否定一個字符集,在集合的開始處放置一個^即可。因此,盡管[123]匹配字符1、2或3,但[ ^123]卻匹配除這些字符外的任何東西。

??匹配范圍

提示

集合可用來定義要匹配的一個或多個字符。例如,下面的集合將匹配數(shù)字0到9:[0123456789]

  1. 為簡化這種類型的集合,可使用-來定義一個范圍。下面的式子功能上等同于上述數(shù)字列表:[0-9]
  2. 范圍不限于完整的集合,[1-3]和[6-9]也是合法的范圍。此外,范圍不一定只是數(shù)值的,[a-z]匹配任意字母字符。

輸入

SELECT prod_name FROM products 
	WHERE prod_name REGEXP '[1-5] Ton'
		ORDER BY prod_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索
分析

這里使用正則表達式[1-5] Ton。[1-5]定義了一個范圍,這個表達式意思是匹配1到5,因此返回3個匹配行。由于5 ton匹配,所以返回.5 ton。

??匹配特殊字符

正則表達式語言由具有特定含義的特殊字符構(gòu)成。我們已經(jīng)看到.[]、|和-等,還有其他一些字符。請問,如果你需要匹配這些字符,應(yīng)該怎么辦呢?例如,如果要找出包含.字符的值,怎樣搜索?請看下面的例子:

輸入

SELECT vend_name FROM vendors
	WHERE vend_name REGEXP '.'
		ORDER BY vend_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索

分析

??這并不是期望的輸出,.匹配任意字符,因此每個行都被檢索出來。

為了匹配特殊字符,必須用11為前導(dǎo)。1l-表示查找-, 表示查找.

輸入

SELECT vend_name FROM vendors
	WHERE vend_name REGEXP '\\.'
		ORDER BY vend_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索
分析

這才是期望的輸出。ll.匹配.,所以只檢索出一行。這種處理就是所謂的轉(zhuǎn)義 (escaping),正則表達式內(nèi)具有特殊意義的所有字符都必須以這種方式轉(zhuǎn)義。這包括.、1、[]以及迄今為止使用過的其他特殊字符。

【MySQL】不允許你不會用正則表達式進行搜索

??匹配字符類

?存在找出你自己經(jīng)常使用的數(shù)字、所有字母字符或所有數(shù)字字母字符等的匹配。為更方便工作,可以使用預(yù)定義的字符集,稱為字符類character class)。表9-2列出字符類以及它們的含義。

字符類*
【MySQL】不允許你不會用正則表達式進行搜索

??匹配多個實例

概要

??目前為止使用的所有正則表達式都試圖匹配單次出現(xiàn)。如果存在一個匹配,該行被檢索出來,如果不存在,檢索不出任何行。但有時需要對匹配的數(shù)目進行更強的控制。例如,你可能需要尋找所有的數(shù),不管數(shù)中包含多少數(shù)字,或者你可能想尋找一個單詞并且還能夠適應(yīng)一個尾隨的s(如果存在),等等。

重復(fù)元字符
【MySQL】不允許你不會用正則表達式進行搜索

舉例分析

下面舉幾個例子。

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
		ORDER BY prod_name;

輸出
【MySQL】不允許你不會用正則表達式進行搜索

分析

正則表達式1([0-9] sticks?\)需要解說一下。l1(匹配)[0-9]匹配任意數(shù)字(這個例子中為1和5),sticks?匹配stick和sticks (s后的?使s可選,因為?匹配它前面的任何字符的0次或1次出現(xiàn)),\)匹配)。沒有?,匹配stick和sticks會非常困難。

??定位符

目前為止的所有例子都是匹配一個串中任意位置的文本。為了匹配特定位置的文本,需要使用表列出的定位符

定位符表
【MySQL】不允許你不會用正則表達式進行搜索

舉例概述

??例如,如果你想找出以一個數(shù) (包括以小數(shù)點開始的數(shù)) 開始的所有產(chǎn)品,怎么辦?簡單搜索0-9\.不行,因為它將在文本內(nèi)任意位置查找匹配。解決辦法是使用~定位符,如下所示

輸入

SELECT prod_name FROM products
	WHERE prod_name REGEXP '^[0-9\\.]'
		ORDER BY prod_name;

匹配串的開始。因此,^ [0-91\.]只在或任意數(shù)字為串中第一個字符時才匹配它們。沒有^,則還要多檢索出4個別的行(那些中間有數(shù)字的行)。

??如何鞏固學(xué)習(xí)

提示:在學(xué)習(xí)的過程中,我們需要先自行進行思考,而不是一遇到不會的就放棄思考直接看答案,如果最后遇到真的不會的題目,我們可以適當(dāng)?shù)倪M行觀看答案,看自己的思路是否正確,在作出正確的判斷

??本文小結(jié)

本文章介紹了正則表達式的基礎(chǔ)知識,學(xué)習(xí)了如何在MySQL的SELECT語中通過REGEXP關(guān)鍵字使用它們。

好啦今日的分享到這里就結(jié)束啦,我是愛你們的M malloc希望可以幫助到你們噢,最后別忘記三連啦?。?/p>

【MySQL】不允許你不會用正則表達式進行搜索

【MySQL】不允許你不會用正則表達式進行搜索文章來源地址http://www.zghlxwxcb.cn/news/detail-500895.html

到了這里,關(guān)于【MySQL】不允許你不會用正則表達式進行搜索的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • MySQL正則表達式 | 事務(wù)詳解

    MySQL正則表達式 | 事務(wù)詳解

    目錄 一、正則表達式 實例操作 二、事務(wù) 事務(wù)控制語句 MYSQL 事務(wù)處理主要有兩種方法 SQL測試代碼 PHP中使用事務(wù)實例 使用保留點 SAVEPOINT MySQL可以通過? LIKE ...% ?來進行模糊匹配。 MySQL 同樣也支持其他正則表達式的匹配, MySQL中使用 REGEXP 操作符來進行正則表達式匹配。 如果

    2023年04月18日
    瀏覽(17)
  • MySQL正則表達式檢索數(shù)據(jù)

    MySQL正則表達式檢索數(shù)據(jù)

    目錄 一、使用正則表達式進行基本字符匹配 1.使用regexp 2.使用正則表達式? .? 二、進行OR匹配 1.為搜索兩個串之一,使用? ?|?? 2.匹配幾個字符之一[] 3.匹配范圍 ?4.匹配特殊字符 過濾數(shù)據(jù)允許使用 匹配、比較、通配符 操作來尋找數(shù)據(jù),但是隨著過濾條件的復(fù)雜性增

    2024年02月14日
    瀏覽(25)
  • mysql 正則表達式 提取 指定字符

    mysql 正則表達式 提取 指定字符

    eg: 使用正則表達式來進行匹配替換: REGEXP_REPLACE(\\\'需要進行替換的字段‘, ‘被替換的’,‘替換的內(nèi)容’) eg: 模式 說明 ^ 匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,^ 也匹配 ‘n’ 或 ‘r’ 之后的位置。 $ 匹配輸入字符串的結(jié)束位置。

    2024年02月06日
    瀏覽(28)
  • sed中使用正則表達式進行替換以及注意事項

    sed中使用正則表達式進行替換的時候,一定要注意,有些特殊字符在使用時要轉(zhuǎn)義,目前發(fā)現(xiàn)的有: 用于分組的小括號:(),在使用時要用進行轉(zhuǎn)義,但是匹配字符串中真正的小括號時,無需轉(zhuǎn)義; 表示前面的表達式出現(xiàn)次數(shù)的{},也要轉(zhuǎn)義; 表示前面的表達式出現(xiàn)1次或多

    2023年04月22日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫——MySQL REGEXP:正則表達式

    正則表達式主要用來查詢和替換符合某個模式(規(guī)則)的文本內(nèi)容。例如,從一個文件中提取電話號碼,查找一篇文章中重復(fù)的單詞、替換文章中的敏感語匯等,這些地方都可以使用正則表達式。正則表達式強大且靈活,常用于非常復(fù)雜的查詢。 MySQL 中,使用? REGEXP ?

    2024年02月01日
    瀏覽(27)
  • 【日志解析】【頻率分析】ULP:基于正則表達式和本地頻率分析進行日志模板提取

    【日志解析】【頻率分析】ULP:基于正則表達式和本地頻率分析進行日志模板提取

    1 論文出處 會議:International Conference on Software Maintenance and Evolution(ICSME) 級別:CCF-B 時間:2022 2 背景 2.1 背景介紹 ??日志文件包括大量關(guān)于軟件系統(tǒng)執(zhí)行的信息,用于幫助處理不同的軟件工程活動,生成的日志事件主要由兩部分組成:日志頭和日志消息。解析日志消息需

    2024年02月09日
    瀏覽(30)
  • 小程序js(正則表達式):文本框?qū)κ謾C號進行標(biāo)準(zhǔn)化規(guī)范

    ? /^1[3456789]d{9}$/ 是一個正則表達式,用于匹配手機號碼的格式。 具體解釋如下: / ?是正則表達式的開始和結(jié)束標(biāo)記。 ^ ?表示匹配字符串的開頭。 1 ?表示要匹配的字符串必須以數(shù)字 1 開頭。 [3456789] ?表示下一位的數(shù)字必須是 3、4、5、6、7、8 或 9 中的一個。 d ?表示匹配

    2024年02月05日
    瀏覽(26)
  • 【正則表達式】正則表達式常見匹配模式

    模式 描述 w 匹配字母數(shù)字及下劃線 W 匹配非字母數(shù)字下劃線 s 匹配任意空白字符,等價于 [tnrf]. S 匹配任意非空字符 d 匹配任意數(shù)字,等價于 [0-9] D 匹配任意非數(shù)字 A 匹配字符串開始 Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串 z 匹配字符串結(jié)

    2024年02月09日
    瀏覽(40)
  • Java 之正則表達式語法及常用正則表達式匯總

    Java 之正則表達式語法及常用正則表達式匯總

    正則表達式,又稱規(guī)則表達式。(英語:Regular Expression,在代碼中常簡寫為 regex、regexp 或 RE),計算機科學(xué)的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。 正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱

    2024年02月09日
    瀏覽(31)
  • Python正則表達式之學(xué)習(xí)正則表達式三步曲

    ????????正則表達式描述了一種字符串匹配的模式,可以用來檢查一個串的有無某子串,或者做子串匹配替換,取出子串等操作。也可以說正則表達式就是字符串的匹配規(guī)則,也可以理解為是一種模糊匹配,匹配滿足正則條件的字符串。 ????????1、數(shù)據(jù)驗證(eg:表單驗

    2024年02月15日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包