正規表示式(未完待續)

2022-04-28 05:37:57 字數 2892 閱讀 7181

#正規表示式定義

能夠表示一定意義的【字串】的組合就是正規表示式,正規表示式就是乙個字串

#正規表示式的**

1.**--unix作業系統。正規表示式 叫做posix (兩個版本bre和ere)

2.prel, python等語言,都有獨特的正則語法。叫做pcre正則

3.常用的兩大正則 posix系列和pcre系列

4.prel語言使用【pcre】, c語言使用【posix】, php【pcre/posix】, python使用【pcre】

#正則的作用

1.字串過濾:在字串中獲取需要的部分字元。

3.切割字串:劃分字元內容。

5.爬蟲中大量使用正則。

'''

正則的組成:由原子,元字元及模式修正符組成 。【其他語言中可能存在定界符】

'''#原子:

組成正規表示式的最小單位,乙個正規表示式至少需要乙個原子。

1.所有可見字元都是原子:a,b,c,d,a,b,c,d,你,我,他+—*&……%¥#@

2.所有不可見字元也是原子:\t, \n, \r......(轉義字元)

3.正則專用轉義字元:

\d 表示0~9之間任意【乙個】字元 -> [0123456789]自定義原子列**式

\d 表示除了0~9之外的任意【乙個】字元 -> [^0-9]自定義排除格式

\s 表示任意【乙個】空白字元 (空格(' '), 換頁('\f'), 換行('\n'), 回車('\r'), 水平製表符('\t'),垂直製表符('\v')) -> [ \r\t\n\f\v]自定義原子列表

\s 表示任意乙個非空白字元(可見字元) -> [^ \r\n\f\v\t]自定義排除列 **式

\w 表示0~9a~za~z和_中的任意【乙個】字元 -> [0~9a~za~z_]自定義列表 格式

\w 表示除了0~9a~za~z和_之外的任意【乙個】字元 -> [^0~9a~za~z_]自 定義排除列**式

. 表示任意乙個字元[除了\n] [^\n]

#元字元:[原子修飾符]

自定義原子列表

表示自定義原子列表中的任意乙個字元,如果多個字元在ascii碼中連 續的,可以進行縮寫。例如[0123456789] -> [0-9]

自定義排除列表

表示自定義原子列表之外的任意乙個字元如果多個字元在ascii碼中連 續的,可以進行縮寫。例如\d ->[^0-9]

與數量相關的元字元

+ 表示1個或者多個修飾的原子 【1,正無窮】

? 表示0個或者1個修飾的原子 【0, 1】

* 表示任意乙個修飾的原子 【0, 正無窮】

表示必須為m個修飾的原子

表示必須為m到n個修飾的原子 m,n都包含在內

表示必須為m到正無窮個修飾的原子【m, 正無窮】

表示必須為小於n個修飾的原子【0,n】

\a 表示限定內容必須在整個字串的開頭部位

\z 表示限定內容必須在整個字串的結尾部位

^ 表示限定內容必須在整個字串的開頭部位,支援多行匹配模式

$ 表示限定內容必須在整個字串的結尾部位,支援多行匹配模式

\b 表示能夠當做英文單詞分割的字元,(除了字母和數字 都是詞邊界,漢 字作為字母處理)代表【乙個】字元

\b 表示不能夠當作英文單詞分割的字元(非詞邊界,就是字母和數字)代 表【乙個】字元

| 表示選擇關係,左右的完整內容二選一 非常重要

() 1.改變正規表示式中的優先順序

2.將多個原子視為乙個原子處理,方便使用元字元。

3.將匹配的內容當做模式單元進行儲存

''' 額外補充:多行模式,如果字串中包含\n字元,則可以在匹配的時候使用 多行匹配模式,多行匹配模式就是將每一行當做獨立的字串進行匹配。

注意:多行模式需要使用模式修正符

'''

#模式修正符

設定匹配的一些額外的規則

re.a 或者寫成re.ascii 在ascii模式下進行正則匹配

re.u 或者寫成 re.unicode 在unicode模式下進行正則匹配(例如漢字也可以當做字母) 預設情況下

re.s 使得原子原子.可以匹配任意字元,包含\n

re.m 或者re.multiline 匹配操作在多行模式下進行 都是^和$相關

re.x 或者re.verbose 匹配的時候忽略正規表示式中的空格或者注釋

re.i 或者re.ignorecase 匹配過程中忽略大小寫

## 轉義字元的應用

字串:\n \r \t \\ ...

因為在正則的元字元和原子當中,使用了部分的符號作為語法,為了匹配這些符號的單純字元,需要在正規表示式中加上\即可去掉意義,獲取字元。

##擴充套件正則語法

1.(?limsux) 模式修正符的應用。自定義模式修正符,可以自由組合

2.(?:) 取消單元儲存功能

3.(?p) 自定義模式單元的名稱 (html標籤常用)

4.(?p=name) 獲取自定義模式單元的名稱

5.(?#) 正則注釋內容,解析器不會處理

6.(?=) 正向先行斷言 (零寬斷言)

7.(?!) 負向先行斷言 (零寬斷言)

8.(?<=) 正向後行斷言 (零寬斷言)

9.(?

'''###re模組的方法

re.compile()

re.escape()

re.findall()

re.finditer()

re.match()

re.search()

re.split()

re.sub()

re.subn()

re文件

正規表示式的有益應用(未完待續)

提取字元塊 re.findall 方法,找出所有 無重疊的 匹配的指定正規表示式。例如找出乙個詞中的所有原因,並計數 word aairoweotiqkttms.ajkostalrtsetayk re.findall r aeiou word 查詢詞幹 re.findall r ing ly ed ...

正規表示式RegExp詳解 待續

正規表示式 regular expression 是一種描述字元模式的物件,regexp 物件表示正規表示式,用來驗證使用者輸入。一,建立正規表示式 1,採用new運算子 var bb new regexp 引數字串 可選模式修飾符 2,字面量法 var bb 引數字串 可選模式修飾符 模式修飾符引...

PHP 正規表示式 筆記(未完)

一般使用 但不限於此 除字母 數字 反斜槓 的其他字元都可以作為定界符 匹配除換行符之外任意字元 d 匹配任意乙個十進位制數字 d 匹配任意乙個非十進位制數字 s 匹配乙個不可見原子 s 匹配乙個可見原子 w 匹配任意乙個數字 字母或下劃線 a za z0 9 w 匹配任意非乙個數字 字母或下劃線 ...