輕鬆學正規表示式

2021-09-10 04:00:31 字數 2424 閱讀 4089

正規表示式廣泛用於查詢、校驗,無論使用什麼語言開發,或者是日常工作中使用編輯器,掌握正規表示式都能帶來效率上的收穫。

我在別人的教程中看過一句話:「如果你覺得正規表示式很簡單,要麼你是乙個天才,要麼你不是地球人。」

不要被嚇到,一旦理解正則後,其實也並不會那麼難,而且它給我們帶來的好處是毋庸置疑的。本文盡量用通俗易懂的語言將正則的規則描述清楚。

^$分別匹配開始和結束,常見的正規表示式通常包含了^$,並不是說正規表示式本身必須包含這兩個標識,而是說「從頭到尾匹配整個字串」。

正則的目的是以規則匹配字串,而正規表示式本身也是字串,就要用占用部分字元或字串來進行規則描述,元字元限定符就屬於規則描述的一部分。

規則「10個數字」中,我們將「10個」理解為限定符,將「數字」理解為元字元。

手機號碼的正則^1\d$描述的規則是:「以『1』開頭,後面跟10個數字」。其中\d表示「數字」,表示「10個」

元字元說明

.匹配除換行符以外的任意字元

\w匹配字母或數字或下劃線或漢字

\s匹配任意的空白符

\d匹配數字

\b匹配單詞的開始或結束

^匹配字串的開始

$匹配字串的結束

限定符說明

*重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次或更多次

重複n到m次

由於元字元和限定符本身也是字串,所以當我們要匹配乙個問號,必須進行轉移,否則會將「?」當成限定字元。於是匹配問號必須進行轉移,正則中轉義符為:\

如匹配問號用\?;匹配轉義字元本身用\\

**/語法

說明\w

匹配任意不是字母,數字,下劃線,漢字的字元

\s匹配任意不是空白符的字元

\d匹配任意非數字的字元

\b匹配不是單詞開頭或結束的位置

[^帥]

匹配除了「帥」以外的任意字元

[^帥氣]

匹配除了「帥氣」這幾個字母以外的任意字元

從上表可以看出^符號有取反的意思,但要放在以內,否則會被當成匹配開始。

注意,只要中以^開頭,將對整個中的內容取反

|表示邏輯或,即多個條件只需要滿足乙個,不過多描述。

簡單的將ipv4正則可寫為^(\d\.)\d$

按步驟理解:

\d表示1至3位數字

\d\.表示1至3位數字後面跟乙個點

(\d\.)表示1至3位數字後面跟乙個點,重複3次

最後再加乙個\d

以上正則可以簡單的描述正規表示式的規則,但有乙個問題:ip位址的區間應該是「0.0.0.0」到「255.255.255.255」,而以上正規表示式會匹配「300.556.900.650」這種錯誤的ip位址,因此我們需要將ipv4正規表示式進行修改。

但由於正則是匹配字串的,無法直接提供0-255的數字大小區間,於是我們只能自己對其進行拆分。

按步驟分析:

描述250-255的規則:25[0-5]描述200-249的規則:2[0-4]\d描述100-199的規則:1\d描述0-99的規則:[1-9]?\d將以上四步的規則進行|拼接,然後加上點\.

於是得出^((25[0-5]|2[0-4]\d|((1\d)|([1-9]?\d)))\.)(25[0-5]|2[0-4]\d|((1\d)|([1-9]?\d)))$

使用go語言測試以上正則:

package main

import (

"fmt"

"regexp"

)var exp= regexp.mustcompile("^帥氣")

var expipv4= regexp.mustcompile(`^((25[0-5]|2[0-4]\d|((1\d)|([1-9]?\d)))\.)(25[0-5]|2[0-4]\d|((1\d)|([1-9]?\d)))$`)

func main()

輸出結果:

true

false

true

false

輕鬆學習正規表示式

英文原文 learn regular expressions regex with ease 謝謝合作!譯文如下 開篇,談談本文的主要內容 編寫驗證規則最流行和最簡單的方法就是正規表示式了,但唯一的乙個問題是正規表示式的語法太隱晦了,讓人蛋疼無比。很多開發者為了在專案中應用複雜的驗證,經常要使用一些...

輕鬆學習正規表示式

正規表示式 regular expression 描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串 將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。列目錄時,dir txt或ls txt中的 txt就不是乙個正規表示式,因為這裡 與正則式的 的含義是不同的。正規表示式是由普通字...

輕鬆學習正規表示式

也許你是初學者,那以防萬一,我先來講講什麼是正規表示式吧 正規表示式可以幫助我們更好的描述複雜的文字格式。一旦你描述清楚了這些格式,那你就可以利用它們對文字資料進行檢索 替換 提取和修改操作。下面有乙個正規表示式的簡單例子。第一步先要引入有關正則式的命名空間 using system.text.re...