常用函式
正規表示式——描述字串排列的規則:主要用途:用於字串的匹配,檢查是否滿足某種規則在對字串進行處理的時候,希望按照自定義的規則進行處理,稱為模式。我們用正規表示式描述這些自定義規則,也稱為模式表示式
在python中,經常使用re模組
實現正規表示式
原子是正規表示式的基本單位,每個正規表示式至少要包含乙個原子,常見如下:
(1)普通字元作為原子
普通字元即數字,大小寫字母等
import re
pattern="yue"
string=""
result=re.search(pattern,string)
print(result)
執行可以看到輸出結果為
<_sre.sre_match
object; span=(16,
19), match='yue'>
(2)非列印字元作為原子
比如說\n
、\t
等
print(result)執行得到結果如下:
<_sre.sre_match
object; span=(5,
6), match='\n'>
(3)通用字元作為原子
通用字元,即乙個原子可以匹配到一類字元,而不僅僅是乙個,常見字元及其含義如下:
符號含義
\w匹配任意乙個字母、數字、下劃線
\w匹配除字母、數字、下劃線以外的任意乙個字元
\d匹配任意乙個十進位制數
\d匹配任意乙個除十進位制數以外的任意乙個字元
\s匹配任意乙個空白字元
\s匹配除空白字元以外的任意乙個其他字元
舉例:
import re
pattern="\w\dpython\w"
string="asdasfda234python2e"
result=re.search(pattern,string)
print(result)
結果如下:
<_sre.sre_match
object; span=(9,
18), match='34python2'>
(4)原子表
使用原子表,可以定義一組地位平等的原子,在匹配的時候回取該原子表的任意乙個原子進行匹配,原子表使用表示,例如
[xyz]
定義了三個原子x、y、z,地位平等
另外[^xyz]
表示出了裡面的原子均可匹配
元字元,是正規表示式中具有特殊含義的字元,常見元字元如下:
符號含義
.匹配除換行符以外的任意字元
^匹配字串的開始位置
$匹配字串的結束位置
*匹配0次、1次或多次前面的原子
?匹配0次或1次前面的原子
+匹配1次或多次前面的原子
前面的原子恰好出現n次
前面的原子至少出現n次
前面的原子至少出現n次,至多出現m次
|模式選擇符
()模式單元符
具體來說,元字元分為:任意匹配元字元、邊界限制元字元、限定符、模式選擇符、模式單元符
模式修正符,可以在不改變正規表示式的情況下,改變正規表示式的含義,實現對匹配結果的調整,比如可以讓在匹配時不區分大小寫等常見模式修正符如下
符號含義
i忽略大小寫
m多行匹配
l做本地化識別匹配
u根據unicode字符集解析字元
s讓.匹配包括換行符
貪婪模式進行盡可能多的匹配。而懶惰模式盡可能少的匹配
舉例:
import re
pattern1="p.*y"#貪婪模式
pattern2="p.*?y"#懶惰模式
string="pythony"
result1=re.search(pattern1,string)
result2=re.search(pattern2,string)
print(result1)
print(result2)
結果如下:
<_sre.sre_match
object; span=(0,
7), match='pythony'>
<_sre.sre_match
object; span=(0,
2), match='py'>
也就是乙個「?」元字元的區別,因為?有0或1個的限制,所以可以成為懶惰模式
用於從起始位置開始匹配乙個模式
函式原型:re.match(pattern,string,flag)可以使用- pattern:正規表示式
- string:源字元
- flag:可以用來放模式修正符資訊
.span()
只保留匹配的位置資訊
函式原型 :re.search(pattern,string)前面的函式,即使有多個結果符合模式,也只會給出最先匹配到的結果,要想得到所有的匹配結果,需要以下步驟:- pattern:正規表示式
- string:匹配的源字元
(1)使用re.compile()
對正規表示式進行預編譯
(2)編譯後,使用findall()
根據正規表示式,得到所有的匹配結果
舉例:
import re
pattern="python"
string="pythonpython"
pattern=re.compile(pattern)
result=pattern.findall(string)
print(result)
輸出結果:
['python', 'python']
使用re.sub()
函式可以實現使用正規表示式替換某些字元
函式原型 :re.sub(pattern,rep,string,max)舉例:- pattern:匹配的正規表示式
- rep:要替換的字串
- string:源字串
- max:可選,代表最多替換次數
import re
pattern="python"
string="pythonpython"
pattern=re.compile(pattern)
result=re.sub(pattern,"py",string)
print(result)
結果為:
pypy
而**:
import re
pattern="python"
string="pythonpython"
pattern=re.compile(pattern)
result=re.sub(pattern,"py",string,1)
print(result)
的結果為:
pypython
基本正規表示式
匹配除了換行符以外的任意字元 w 匹配字母或數字或下劃線或漢字 字母大寫即反義 不匹配 s 匹配任意的空白符 字母大寫即反義 不匹配 d 匹配數字 字母大寫即反義 不匹配 b 匹配單詞的開始或結束 字母大寫即反義 不匹配 匹配字串的開始 匹配字串的結束 x 匹配除了x以外的任意字元 aeiou 匹配...
正規表示式 基本
字元 d任意乙個數字,0 9中任意乙個 d任意非數字 w任意乙個字母 下劃線 數字。即 a z a z 0 9 w表示除 0 9a za z 之外的字元 s匹配任何空白字元,包括空格 製表符 換頁符等等。等價於 f n r t v s匹配任何非空白字元。匹配任意乙個字元 如要匹配包括 n在內的所有字...
正規表示式的基本使用
雖說正規表示式在我們真正的專案開發過程中,大多數都是直接去查資料,但是對於一些正規表示式的基礎知識還是十分有必要了解的。比如讀懂乙個正規表示式,還有面試的時候很可能會被問到。1 學習 2 教程什麼的看的太煩了,而且還有些東西並不是很實用,下面花10分鐘就可以掌握實用的 基礎的正規表示式了。當然,這些...