一文搞懂正則表達式
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
在日常的開發工作中,正則表達式猶如空氣般無所不在,扮演著不可或缺的角色。我們時常依賴正則來解決各類問題,例如精準定位符合特定規則的文本。然而,我注意到許多開發者對正則持有“復雜難記”的觀念,難以全面掌握這一強大的工具,以至于每當在實際工作中遇到需要運用正則表達式的情況時,往往不得不翻閱資料才能編寫出合適的正則。 正則表達式作為一種無比強大的工具,無疑值得我們在開發過程中深入學習并熟練運用。它能幫助我們高效解決各類復雜問題,顯著提升工作效率,從而讓我們的編程之旅更加得心應手,游刃有余。 什么是正則表達式你可以這樣來理解正則是一個非常強大的文本處理工具,我們可以利用它來教驗數據的有效性,比如用戶輸入的手機號是不是符合規則;另外,也可以用正則從文本中提取需要的內容,比如從網頁中抽取我們需要的數據;此外,正則還可以用來做文本內容的替換從而得到我們想要的內容,可以說正則已經滲透到了我們日常工作的方方面面,不難發現學習并利用好正則至關重要。 怎么理解正則表達式呢?簡單來說它就是描述字符串的規則,最簡單的正則就是單個的普通字符,比如字 除了剛剛說的普通的字符串的查找之外,有時候我們還需要查找符合某個規則的文本;比如我們想找出字符串中所有的數字,而任意數字在正則中可以用 單個的 正則不僅僅能找出符合要求的文本,還可以對文本進行替換。比如說我們有這樣一段文本 原字符正則表達式中其實有很多的原字符,比如 我們可以把原字符大概的分成這么幾類,有基礎常用的、特殊的空白符、表示某個范圍的、表示邊界的、表示次數的量詞;原字符雖然非常的多但如果我們按照分類去理解記憶,效果就會好很多。接下來我們就按照前面說的原字符的分類來逐一的進行講解。 基礎的原字符首先非常常用的基礎的原字符,比如英文的點它表示換行以外的任意字符, 特殊的空白符接著我們來看一下空白符有哪些,其實我們在編程中經常會遇到比如說換行符 表示數量的原字符剛剛我們說到的基礎的原字符也好,空白符也好,它們都只能匹配單個字符比如說 在正則中英文的 就比如說由于業務需要我們在日制中添加了 user 這樣一個字段,但舊日志可能是沒有這個字段的;這個時候我們可以使用 范圍原字符學習到了量詞我們就可以使用 管道符號它是隔開多個正則來表示滿足其中任意一個就行,比如 知道了這些我們就可以輕松搞定前面的問題,手機號的匹配可以這樣優化第二位可能 邊界原字符前面我們學習了如何匹配文本中包含的內容,但是有時候我們除了要找出符合某種組成規則的字符外還對匹配到的文本的位置有要求,比如說某個日志文件我們需要找出每行以時間開頭的日志。這里要使用的正則不僅要滿足時間的格式要求,它還要滿足匹配道美行的開頭才行,這時我們就需要用到邊界相關的原字符了。 和剛才說到的中括號中的脫字符不同,如果正則中開始是脫字符,它表示每行開頭的部分只有滿足正則的規則的前提下才能夠匹配上;類似的正則中有美元的符號 貪婪和非貪婪接著我們來看一下正則中的貪婪與非貪婪,正則表達式中表示次數的量詞默認是貪心的;也就是說它盡可能的多的去匹配符合要求的內容 ,舉個例子來說我們要找出引號里面的單詞;可能很多同學很容易寫出 但這樣對嗎?如果有多個雙引號的時候是不會正常工作的,因為表示次數的量詞默認是貪心的,它要盡可能多的去匹配符合要求的內容 ,不過想要讓它變成非貪婪也很容易我們只需要在量詞后面加上問號就可以了。 從示例中可以看出對比上的差異左右的文本是一樣的,其中有兩對雙引號不同之處在于,圖的左邊不加問號時是貪婪匹配,可以看到匹配上了第一個引號到最后一個引號之間的所有的內容;而右邊這個圖它表示 1 到多次,加號后面有一個問號,結果就找到了符合要求的并且長度是最短的,這就是進行了非貪婪的匹配。 環視當我們對想要的提取的字符串的左邊或者是右邊的環境有要求的時候,比如說我們要查找左邊是數字的字母,這個時候我們需要用到正則的環視,簡單的說環視就是在我們給定的規則前或者是規則后來加一些限制。 下圖就是利用環視來提取出左邊是標簽右邊是標簽的字符。 子組們再來了解一下正則中的子組,它的功能是將正則分成若干個小組用擴號來擴起來,那么將正則保存成一個子組。子組可以用來表示某個部分的內容在后面重復出現或者是對某個部分的內容進行替換。另外,正則匹配的時候我們還可以指定 flag,比如用點可以匹配所有字符,包括換行多行的匹配模式或者是大小寫不敏感的匹配模式。 案例實踐我們回到今天開頭提出的問題也就是如何將文本中重復出現的單詞替換成單個單詞。在這里我們可以分成兩步來操作,首先我們需要查找出相關的內容然后再對其進行替換。 我們來先看一下查找部分,我們可以簡單的用 在替換部分我們使用 那么除了工作中我們能使用到正則在生活中其實我們也可以用正則來做一些非常有趣的事情,這里我引入一個案例比如說我們來用正則來幫助我們下載電視劇。用正則來提取出電視劇對應的網址,首先我們可以使用 然后我們單擊右鍵審核元素或者檢查,然后獲取到每一集電視劇的鏈接的 最后把查找的內容剪切出來,把剪切出來的內容粘貼到一個新的地方,通過替換等方式我們可以在這些網址的開頭都加上
總結最后我來給你總結一下,正則表達式中原字符的分類記憶,大家可以在腦海中回憶一下,基礎常用的、空白符、范圍、邊界、量詞等;子組則是將一個正則中的部分內容進行分組常常用于內容的替換;而貪婪和非貪婪其實就是量詞后面添加問號,去改變匹配次數的偏好;環視則是限制匹配內容之前或之后要符合某個規則。 今天通過大量的示例讓你加強了對正則各類原字符,貪婪與非貪婪,環視等方面的理解,掌握了這些內容相信你就能夠掌握日常工作中的一些基本使用了。這里給大家推薦一個網站 該文章在 2024/1/24 23:04:12 編輯過 |
關鍵字查詢
相關文章
正在查詢... |