濮阳杆衣贸易有限公司

主頁 > 知識庫 > 淺談正則表達式(Regular Expression)

淺談正則表達式(Regular Expression)

熱門標簽:css百度地圖標注位置顯示 線上教育ai外呼系統(tǒng) 地圖標注商戶中心要收錢多少 400免費電話去哪申請 宿遷智能外呼系統(tǒng)供應商 地圖標注字母的軟件 實用地圖標注app 菏澤智能ai電銷機器人銷售公司 鄂州人工智能電銷機器人軟件

一、什么是正則表達式?

簡單的說:正則表達式(Regular Expression)是一種處理字符串匹配的語言;

正則表達式描述了一種字符串匹配的模式,可以用來檢查一個字符串是否含有某種子串,對匹配到的子串進行“取出”或“替換”操作。

二、正則表達式的應用

正則表達式在實際的開發(fā)過程中非常實用,能夠快速解決一些復雜的字符串處理問題,下面我對正則表達式的應用做一些簡單分類:

第一種:數(shù)據(jù)驗證
比如,你要驗證一個字符串是否是正確的EMail,Telphone,Ip等等,那么采用正則表達式就好非常方便。

第二種:內(nèi)容查找
比如,你要抓取一個網(wǎng)頁的圖片,那么你肯定要找到img>標簽,這時候用正則表達式就可以精準的匹配到。

第三種:內(nèi)容替換
比如,你要把手機號碼中間四位隱藏掉變成這種模式,123****4567,那么采用正則表達式也會非常方便。

三、正則表達式有哪些內(nèi)容

下面我將簡單的介紹一下正則表達式:

1、 正則表達式的幾個重要的概念
•子表達式:在正則表達式中,如果使用"()"括起來的內(nèi)容,稱之為“子表達式”
•捕獲:子表達式匹配到的結果會被系統(tǒng)放在緩沖區(qū)中,這個過程,我們稱之為“捕獲”
•反向引用:我們使用"\n",其中n是數(shù)字,表示引用之前某個緩沖區(qū)之間的內(nèi)容,我們稱之為“反向引用”
2、數(shù)量限定符
•X+     表示:1或多個
•X*     表示:0或多個
•X?     表示:0或1個
•X{n}    表示: n個
•X{n,}    表示:至少n個
•X{n,m}   表示:n至m個,貪婪原則,會盡可能匹配多個;如果在后面加個?,則為非貪婪原則
注:X表示要查找的字符

3、 字符限定符
•\d   表示:匹配一個數(shù)字字符,[0-9]
•\D  表示:匹配一個非數(shù)字字符,[^0-9]
•\w  表示:匹配包括下劃線在內(nèi)的單詞字符,[0-9a-zA-Z_]
•\W  表示:匹配任何非單詞字符,[^0-9a-zA-Z_]
•\s  表示:匹配任何空白字符,空格、回車、制表符
•\S  表示:匹配任何非空白字符
•.    表示:匹配任何單個字符
此外還有以下幾種:

范圍字符:[a-z]、[A-Z]、[0-9]、[0-9a-z]、[0-9a-zA-Z]
任意字符:[abcd]、[1234]
非在內(nèi)的字符:[^a-z]、[^0-9]、[^abcd]

4、 定位符
•^  表示:開頭標識
•$  表示:結尾標識
•\b   表示:單詞邊界
•\B  表示:非單詞邊界
5、轉義符
•\   用于匹配某些特殊字符
6、選擇匹配符
•|   可以匹配多個規(guī)則
7、特殊用法
•(?=) : 正向預查:匹配以指定內(nèi)容結束的字符串
•(?!) : 負向預查:匹配不是以指定內(nèi)容結束的字符串
•(?:) : 不把選擇匹配符的內(nèi)容放到緩沖區(qū)

四、正則表達式在Javascript下的使用方法

在Javascript下使用正則表達式,有兩種方法:

第一種方法:使用RegExp類
提供的方法有:

•test(str): 在字符串匹配是否有匹配模式的字符串,返回true/false
•exec(str): 返回匹配模式匹配到的字符串,如果有,返回相應的字符串,無,返回null;
        //如果正則表達式中有子表達式,使用exec方法時

        //返回的是:result[0] = 匹配結果 , result[1] = 子表達式1的匹配結果 ……

第二種方法是:使用String類
提供的方法有:

•search : 返回匹配模式的字符串出現(xiàn)的位置,如果沒有,返回-1
•match : 返回匹配模式匹配到的字符串,如果有,返回數(shù)組,無,返回null
•replace : 將匹配模式匹配到的字符串進行替換
•split : 將字符串已匹配模式為分隔符進行字符串分隔,返回數(shù)組

五、正則表達式在PHP下的使用方法

PHP下有兩種使用正則表達式的函數(shù):

第一種是:Perl正則表達式函數(shù)
提供的方法有:

•preg_grep --  返回與模式匹配的數(shù)組單元
•preg_match_all -- 進行全局正則表達式匹配
•preg_match -- 進行正則表達式匹配
•preg_quote -- 轉義正則表達式字符
•preg_replace_callback -- 用回調函數(shù)執(zhí)行正則表達式的搜索和替換
•preg_replace -- 執(zhí)行正則表達式的搜索和替換
•preg_split -- 用正則表達式分割字符串
第二種是:POSIX正則表達式函數(shù)
提供的方法有:

•ereg_replace -- 替換正則表達式
•ereg -- 正則表達式匹配
•eregi_replace -- 不區(qū)分大小寫替換正則表達式
•eregi -- 不區(qū)分大小寫的正則表達式匹配
•split -- 用正則表達式將字符串分割到數(shù)組中
•spliti --  用正則表達式不區(qū)分大小寫將字符串分割到數(shù)組中
•sql_regcase --  產(chǎn)生用于不區(qū)分大小的匹配的正則表達式 

六、總結

正則表達式就是我們實現(xiàn)某個功能的一個工具,這個工具:

1、功能強大
正則表達式中各種限定符的不同組合會實現(xiàn)不同的功能,有時實現(xiàn)一個復雜的功能需要編寫很長的正則表達式,如何能精準匹配,這就要考驗一個程序員的能力了。

2、簡潔方便
平常我們在進行字符串內(nèi)容查找,只能進行某個特定字符串的查找,但是正則表達式可以幫助我們進行模糊查找,更快更方便,僅僅需要一個正則表達式串。

3、各種語言基本上都支持
目前如JAVA、PHP、Javascript、C#、C++等主流語言都支持正則表達式。

4、學習很簡單,應用很高深
學習正則表達式很快也很簡單,但是如何在實際開發(fā)中編寫出高效地,精準地正則表達式,還是需要長時間的嘗試和積累。

如果想快速的入門推薦查看這篇文章:

正則表達式30分鐘入門教程

您可能感興趣的文章:
  • 正則表達式regular expression詳述(一)
  • 正則表達式regular expression詳述(二)
  • 正則表達式基礎教程 regular expression
  • python re正則表達式模塊(Regular Expression)
  • 正則表達式Regular Expression (RegExp)詳解

標簽:綿陽 鞍山 六安 恩施 梅州 咸陽 池州 三亞

巨人網(wǎng)絡通訊聲明:本文標題《淺談正則表達式(Regular Expression)》,本文關鍵詞  淺談,正則,表達式,Regular,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談正則表達式(Regular Expression)》相關的同類信息!
  • 本頁收集關于淺談正則表達式(Regular Expression)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    冷水江市| 满洲里市| 辽阳市| 西丰县| 晋中市| 呼图壁县| 喀喇沁旗| 读书| 萨迦县| 金昌市| 潼南县| 唐河县| 高阳县| 噶尔县| 华安县| 宜君县| 和林格尔县| 洛扎县| 昌平区| 公主岭市| 新丰县| 腾冲县| 松潘县| 清河县| 北京市| 邯郸县| 布尔津县| 碌曲县| 剑河县| 柘城县| 宝坻区| 思茅市| 高淳县| 读书| 东至县| 民丰县| 监利县| 肃北| 辽中县| 濉溪县| 方正县|