<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個提高效率的工具,正則表達式,值得學習一下!

          共 2756字,需瀏覽 6分鐘

           ·

          2021-06-23 03:00

          前言

          之前分享過幾篇工具系列的文章,受到不少讀者喜歡

          今天再分享一個關于提高工作效率的工具:正則表達式

          在工作中一般使用正則表達式來匹配,替換,檢索文本,可以大大提高了工作效率

          文章首發(fā)在公眾號(月伴飛魚),之后同步到掘金和個人網站:xiaoflyfish.cn/

          覺得有收獲,希望幫忙點贊,轉發(fā)下哈,謝謝,謝謝

          簡介

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

          許多程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。

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

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

          下面的例子我會使用Sublime Text(對了,這個工具也非常好用)實現

          元字符

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

          舉例:

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

          特殊單字符

          舉例1:

          舉例2:

          空白符

          舉例:

          s 能匹配上各種空白符號,也可以匹配上空格

          量詞

          舉例1:

          舉例2:

          范圍

          舉例:

          貪婪、非貪婪與獨占

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

          • 貪婪匹配:在正則中,表示次數的量詞默認是貪婪的,在貪婪模式下,會嘗試盡可能最大長度去匹配。

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

          舉個例子1:

          匹配結果是:"aaa",""

          為什么會匹配到空字符串?

          因為星號(*)代表0到多次。

          舉個例子2:

          獨占模式:

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

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

          什么是回溯?

          例如下面的正則:

          regex = “xy{1,3}z”

          text = “xyyz”

          在匹配時,y{1,3}會盡可能長地去匹配,當匹配完 xyy 后,由于 y 要盡可能匹配最長,即三個,但字符串中后面是個 z 就會導致匹配不上,這時候正則就會向前回溯,吐出當前字符 z,接著用正則中的 z 去匹配

          分組與引用

          舉個例子:

          假設我們現在要去查找15位或18位數字。

          根據前面學習的知識,使用量詞可以表示出現次數,使用管道符號可以表示多個選擇,你應該很快就能寫出d15}d{18。

          但經過測試,你會發(fā)現,這個正則并不能很好地完成任務,因為18位數字也會匹配上前15位

          沒有匹配到18位的記錄

          解決方式

          可以用括號括起來表示一個整體

          替換舉例

          替換后:

          匹配模式

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

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

          **使用模式修飾符:**放在整個正則前面時,表示匹配模式

          點號通配模式

          點號它可以匹配上任何符號,但不能匹配換行,如何匹配真正的“任意”符號

          多行匹配模式

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

          注釋模式

          為正則添加注釋

          斷言

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

          通過一些例子來講解。

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

          單詞邊界

          環(huán)視

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

          最后

          覺得有收獲,希望幫忙點贊,轉發(fā)下哈,謝謝,謝謝

          微信搜索:月伴飛魚,交個朋友,進面試交流群

          公眾號后臺回復666,可以獲得免費電子書籍

          參考資料:

          • 極客時間:正則表達式入門課

          面試題:在日常工作中怎么做MySQL優(yōu)化的?


          來自讀者的面試題:談談Spring用到了哪些設計模式?


          美團面試題:緩存一致性,我是這么回答的!

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩黄色激情 | 五月天婷婷丁香网 | 久热精品视频在线播放 | 国产18欠欠欠一区二区 | 91大鸡吧|