1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        正則表達(dá)式 入門

        共 3352字,需瀏覽 7分鐘

         ·

        2021-07-13 16:08

        本文公眾號(hào)來源:月伴飛魚

        作者:日常加油站

        簡(jiǎn)介

        正則表達(dá)式,又稱規(guī)則表達(dá)式,通常被用來檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。

        許多程序設(shè)計(jì)語言都支持利用正則表達(dá)式進(jìn)行字符串操作。例如,在Perl中就內(nèi)建了一個(gè)功能強(qiáng)大的正則表達(dá)式引擎。

        學(xué)會(huì)使用正則表達(dá)式可以極大提高我們文本處理效率,并且各大操作系統(tǒng)、編程語言、文本編輯器都已經(jīng)支持正則表達(dá)式

        在線正則測(cè)試工具:https://regex101.com/r/PnzZ4k/1

        下面的例子我會(huì)使用Sublime Text(對(duì)了,這個(gè)工具也非常好用)實(shí)現(xiàn)

        元字符

        一般普通字符表示的還是原來的意思,比如字符 e

        舉例:

        所謂元字符(Metacharacter)就是指那些在正則表達(dá)式中具有特殊意義的專用字符

        特殊單字符

        舉例1:

        舉例2:

        空白符

        舉例:

        s 能匹配上各種空白符號(hào),也可以匹配上空格

        量詞

        舉例1:

        舉例2:

        范圍

        舉例:

        貪婪、非貪婪與獨(dú)占

        正則有三種模式:貪婪匹配、非貪婪匹配和獨(dú)占模式

        • 貪婪匹配:在正則中,表示次數(shù)的量詞默認(rèn)是貪婪的,在貪婪模式下,會(huì)嘗試盡可能最大長(zhǎng)度去匹配。

        • 非貪婪匹配:找出長(zhǎng)度最小且滿足要求的,量詞后面要加上英文的問號(hào)(?),正則就變成了 a*?

        舉個(gè)例子1:

        匹配結(jié)果是:"aaa",""

        為什么會(huì)匹配到空字符串?

        因?yàn)樾翘?hào)(*)代表0到多次。

        舉個(gè)例子2:

        獨(dú)占模式:

        不管是貪婪模式,還是非貪婪模式,都需要發(fā)生回溯才能完成相應(yīng)的功能。

        但是在一些場(chǎng)景下,我們不需要回溯,匹配不上返回失敗就好了,因此正則中還有另外一種模式,獨(dú)占模式,它類似貪婪匹配,但匹配過程不會(huì)發(fā)生回溯,因此在一些場(chǎng)合下性能會(huì)更好。

        什么是回溯?

        例如下面的正則:

        regex = “xy{1,3}z”

        text = “xyyz”

        在匹配時(shí),y{1,3}會(huì)盡可能長(zhǎng)地去匹配,當(dāng)匹配完 xyy 后,由于 y 要盡可能匹配最長(zhǎng),即三個(gè),但字符串中后面是個(gè) z 就會(huì)導(dǎo)致匹配不上,這時(shí)候正則就會(huì)向前回溯,吐出當(dāng)前字符 z,接著用正則中的 z 去匹配

        分組與引用

        舉個(gè)例子:

        假設(shè)我們現(xiàn)在要去查找15位或18位數(shù)字。

        根據(jù)前面學(xué)習(xí)的知識(shí),使用量詞可以表示出現(xiàn)次數(shù),使用管道符號(hào)可以表示多個(gè)選擇,你應(yīng)該很快就能寫出d15}d{18。

        但經(jīng)過測(cè)試,你會(huì)發(fā)現(xiàn),這個(gè)正則并不能很好地完成任務(wù),因?yàn)?8位數(shù)字也會(huì)匹配上前15位

        沒有匹配到18位的記錄

        解決方式

        可以用括號(hào)括起來表示一個(gè)整體

        替換舉例

        替換后:

        匹配模式

        常見的匹配模式有4種,分別是不區(qū)分大小寫模式、點(diǎn)號(hào)通配模式、多行模式和注釋模式

        不區(qū)分大小寫模式

        **使用模式修飾符:**放在整個(gè)正則前面時(shí),表示匹配模式

        點(diǎn)號(hào)通配模式

        點(diǎn)號(hào)它可以匹配上任何符號(hào),但不能匹配換行,如何匹配真正的“任意”符號(hào)

        多行匹配模式

        多行模式的作用在于,使 ^ 和 $ 能匹配上每行的開頭或結(jié)尾,我們可以使用模式修飾符號(hào) (?m) 來指定這個(gè)模式

        注釋模式

        為正則添加注釋

        斷言

        斷言是指對(duì)匹配到的文本位置有要求。

        通過一些例子來講解。

        你應(yīng)該知道 d{11} 能匹配上11位數(shù)字,但這11位數(shù)字可能是18位身份證號(hào)中的一部分。再比如,去查找一個(gè)單詞,我們要查找 tom,但其它的單詞,比如 tomorrow 中也包含了tom

        單詞邊界

        環(huán)視

        舉例郵政編碼的判斷:6位數(shù)字,且左邊不是數(shù)字,右邊不是數(shù)字



        《對(duì)線面試官》系列目前已經(jīng)連載28篇啦,這是一個(gè)講人話面試系列

        怎樣偷偷努力 驚艷所有人?

        掃碼關(guān)注【面試造火箭
        關(guān)注后回復(fù)「888」還可獲取網(wǎng)盤地址喲!
        瀏覽 99
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            天天色成人网 | 日本韩国无码 | 五月丁香婷婷激情综合网 | a级情欲片在线观看 | 韩国一区电影 | 一极全黄60分钟免费看 | 免费黄片播放 | 免费成人片在线观看 | 国产欧美日韩另类 | 美女扒开粉嫩尿囗桶爽免费网站 |