正規表示式詳解

2021-09-24 03:20:36 字數 2214 閱讀 3225

正規表示式描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。構造正規表示式的方法和建立數學表示式的方法一樣。也就是用多種元字元與運算子可以將小的表示式結合在一起來建立更大的表示式。正規表示式的元件可以是單個的字元、字元集合、字元範圍、字元間的選擇或者所有這些元件的任意組合。

我們如果寫好乙個正規表示式,那就相當於說明了乙個字元匹配規則

無論裡面可選字元究竟有多少,我們只能選乙個

舉個例子,比如我們要驗證乙個6位數字,我們要寫成

[0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]

可以感覺到太麻煩了,所以我們改寫成

[0-9][0-9][0-9][0-9][0-9][0-9]

這句話的意思就是六位數字

可以看出這個中不管怎麼選都只能選乙個

字串選區[a-z]小寫所有字元選一

[a-z]大寫所有字元選一

[a-za-z]所有單詞字元選一

[a-za-z0-9]單詞與數字字元選一

舉個例子

[^47]就是除了4和7都可以填

這是用來簡化常規**的字符集

「\d」–>[0-9]–>1位數字

「\w」–>[0-9a-za-z_]–>1位字母,數字或_

「\s」–>1位空字元:匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。

「 . 「: 除換行回車外的任何乙個字元,如:

​ 「a.[0-9]」:表示乙個字串有乙個"a"後面跟著乙個任意字元和乙個數字;

「^.$」:表示有任意三個字元的字串(長度為3個字元)

\t--------匹配乙個製表符

​ 預定義字元的反義:預定義字元的大寫形式都是小寫的反義

\d---->1位非數字字元

\s------匹配任何非空白字元。等價於 [^\f\n\r\t\v]。

\v------匹配乙個垂直製表符

\n------匹配乙個換行符

\r-------匹配乙個回車符

數量詞可以幫我們規定某段**可以重複出現的次數

語法是:表示必須出現n位

:表示必須最少出現n次或最多出現m次

:表示最少出現n次,多了不限

:表示可以不出現或者最多出現m次

舉例:手機號規則:

​ 第1位:只能是1

​ 第2位:[34578]

​ 第3位之後,必須是9位數字

​ 手機號:/^1[34578]\d$/

*: 有沒有都行,次數不限,相當於

+: 至少1次,重複次數不限,相當於

?: 有沒有都行,最多1次,相當於

():分組

|: 左右兩正規表示式選其一

身份證號邏輯:

​ 前15位數字

​ 16,17位必須是數字

​ 最後一位可以是數字或x x

​ 後三位 可有可無,如果有,只能出現一次

​ \d(\d\d[0-9xx])?

^表示式: 必須以表示式的規則為開頭

表示式$: 必須以表示式的規則為結尾

比如:選擇字串開頭的空格?^\s*

​ 選擇結尾空格?\s*$

​ 選擇開頭或結尾的空格?^\s*|\s*$

如果今後要在程式中進行驗證,必須前後加好^和$

在正式匹配正規表示式之前,先預讀整個字串,進行初步匹配,如果預判都未通過,則不再驗證!

(?=表示式)

表示是否存在表示式裡的內容

例子:4位數字,但不能包含4和7

(?=[^47]$) 是否由除了4,7之外的字元組成

(?!表示式)

先檢查字串是否不滿足表示式要求

比如:6位以上密碼。

​ 字母,數字組成

​ 首字母不能是數字: [a-za-z][a-za-z0-9]

​ 必須至少包含1個大寫字母

​ 不能都由小寫字母和數字組成: (?![a-z0-9]+$)

​ 必須至少包含1個數字

​ 不能都由小寫字母和大寫字母組成:

​ (?![a-za-z]+$)

懶惰模式:正規表示式僅匹配最小的符合規則的字串

比如:篩選網頁中的a元素:

正規表示式詳解

正規表示式 基本正規表示式主要用於grep,egrep,vi,sed,awk命令中進行字串匹配。符號 意義 c 匹配字母c 匹配任意單個字元 匹配前乙個字元出現零次或多次 匹配任意多個任意字元 匹配集合中的任意單個字元,括號中為乙個集合 x y 匹配連續的字串範圍 匹配字串的開頭 匹配字串的結尾 匹...

正規表示式詳解

正規表示式主要作用 分割 匹配 查詢 替換 正規表示式中包括的元素 1.原子 普通字元 a z a z 0 9 原子表 轉義字元 2.元字元 有特殊功能的字元 3.修正模式符 系統內建部分字元,例如 i m s u 原子 1.a z a z 0 9 最常見的字元 2.abc 用圓括號包含起來的單元符...

正規表示式詳解

正規表示式 regular expression 又稱正規表示式 規則表示式等,是電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列匹配某個句法規則的字串,也通常用來檢索 替換那些匹配某個模式的文字。下面從以下方面開始講述正規表示式在python中的應用。1.在python中使用,首先需要...