詳解 Python 正規表示式
正規表示式 是對字串(a - z)& 特殊字元(稱為“元字元”)操作的一種邏輯公式。
就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對 文字 or 字串 的 一種過濾邏輯。
正規表示式,又稱規則表示式(Regular Expression ,簡稱 re )。正規表示式主要用於
- 檢查一個字串是否含有某個子串;
- 也可以從字串中提取匹配的子串;
- 或者對字串中匹配的子串執行替換操作;
# Re庫的主要功能:
函式 | 功能 |
---|---|
re .compile() | 根據一個模式字串和可選的標誌引數,生成一個正規表示式物件 |
re.search() | 在一個字串中搜尋匹配正規表示式的第一個位置,返回match物件 |
re.match() | 在一個字串的開始位置匹配正規表示式,返回match物件 |
re.findall() | 搜尋字串,以列表的形式返回全部能匹配的子串 |
re.split() | 將一個字串按照正規表示式匹配的結果進行分割,返回列表型別 |
re.finditer() | 搜尋字串,返回一個匹配的迭代型別,每個迭代元素是match物件 |
re.sub() | 在一個字串中替換所有匹配正規表示式的子串,返回替換後的字串 |
- group() 返回被 re 匹配的 子串內容
- span() 返回一個元組包含 子串 ( start , end ) 的位置
- start() 返回匹配開始的位置(子串第一個字元的索引)
- end() 返回匹配結束的位置(子串最後一個字元的索引+1 )
1、compile()
compile() 根據一個模式字串和可選的標誌引數,生成一個正規表示式物件( Pattern ),供 match() 替換 和 search() 匹配 這兩個函式使用。
# 函式語法:
re.compile( pattern [, flags] )
函式引數說明:
- pattern:匹配的正規表示式;
- flags:標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等;
2、re.match()
re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
# 函式語法:
re.match(pattern, string, flags=0)
函式引數說明:
- pattern:匹配的正規表示式;
- string:要匹配的字串;
- flags:標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等;
- return:匹配成功返回一個元組,包含所有匹配字串的序號,序號從 1 開始,否則返回None
span(n)方法:用於獲取第 n+1 個組的匹配位置;
group(n)方法:用於獲取第 n+1 個組所匹配的子串內容;
3、re.search()
re.search 掃描整個字串,並返回 第一個 匹配 pattern 的匹配物件。
# 函式語法:
re.search(pattern, string, flags=0)
函式引數說明:
- pattern:匹配的正規表示式
- string:要匹配的字串。
- flags:標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等;
- return:匹配成功返回一個元組(第一處匹配 Pattern的匹配物件)包含所有匹配字串的序號,序號從 1 開始,否則返回None。
span(n)方法:用於獲取第 n+1 個組的匹配位置;
group(n)方法:用於獲取第 n+1 個組所匹配的子串內容;
re.match與re.search的區別
re.match 必須從字串開始處就匹配,如果字串開始不符合正規表示式,則匹配失敗,函式返回 None,
而 re.search 匹配整個字串,直到找到一個匹配。
4、re.sub()
re.sub 替換字串中的匹配項
# 函式語法:
re.sub(pattern, repl, string, count=0, flags=0)
函式引數說明:
- pattern : 正則中的模式字串。
- repl : 替換的字串,也可為一個函式。
- string : 要被查詢替換的原始字串。
- count : 模式匹配後替換的最大次數,預設 0 表示替換所有的匹配。
- flags : 編譯時用的匹配模式,數字形式。
前三個為必選引數,後兩個為可選引數。
5、findall()
在字串中找到正規表示式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
# 函式語法:
re.findall(pattern, string, flags=0)
or
pattern.findall(string [, pos[, endpos]])
函式引數說明:
- pattern 匹配模式。
- string 待匹配的字串。
- pos 可選引數,指定字串的起始位置,預設為 0。
- endpos 可選引數,指定字串的結束位置,預設為字串的長度。
6、re.finditer()
和 findall 類似,在字串中找到正規表示式所匹配的所有子串,並把它們作為一個迭代器返回。
# 函式語法:
re.finditer(pattern, string, flags=0)
函式引數說明:
- pattern 匹配的正規表示式
- string 要匹配的字串。
- flags 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。
7、re.split()
split 方法按照能夠匹配的子串將字串分割後返回列表,它的使用形式如下:
# 函式語法:
re.split(pattern, string[, maxsplit=0, flags=0])
函式引數說明:
- pattern 匹配的正規表示式
- string 要匹配的字串。
- maxsplit 分隔次數,maxsplit=1 分隔一次,預設為 0,不限制次數。
- flags 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。
相關文章
- Python正規表示式詳解Python
- Python 正規表示式模組詳解Python
- 詳解正規表示式
- 正規表示式詳解
- Python正規表示式 findall函式詳解Python函式
- Python正規表示式常用函式詳解Python函式
- 正規表示式?:用法詳解
- Java 正規表示式詳解Java
- grep正規表示式詳解
- Python3之正規表示式詳解Python
- 正規表示式分組詳解
- MySQL-正規表示式詳解MySql
- Linux正規表示式詳解Linux
- JS之正規表示式詳解JS
- Javascript正規表示式詳解(一)JavaScript
- JS正規表示式使用詳解JS
- 正規表示式使用詳解(轉)
- 正規表示式詳解及實戰
- js正規表示式常用函式詳解(續)JS函式
- Python——正規表示式Python
- Python 正規表示式Python
- Python:正規表示式Python
- python正規表示式Python
- 正規表示式教程之位置匹配詳解
- 正規表示式分組例項詳解
- JS基礎篇–正規表示式詳解JS
- Sed 命令詳解 正規表示式元字元字元
- python正規表示式函式match()和search()的區別詳解Python函式
- Oracle中的正規表示式(及函式)詳解Oracle函式
- ORACLE正規表示式函式詳解--轉載整理Oracle函式
- Python正規表示式手稿Python
- python之正規表示式Python
- Python正規表示式大全Python
- python的正規表示式Python
- python工具_正規表示式Python
- python 的正規表示式Python
- python 正規表示式匹配Python
- PHP正規表示式模式修飾符詳解PHP模式