python re正則表達(dá)式模塊(Regular Expression)
模塊的的作用主要是用于字符串和文本處理,查找,搜索,替換等
復(fù)習(xí)一下基本的正則表達(dá)式吧
.:匹配除了換行符以為的任意單個(gè)字符
*:匹配任意字符,一個(gè),零個(gè),多個(gè)都能匹配得到 俗稱(chēng)貪婪模式
+:匹配位于+之前的一個(gè)或者多個(gè)字符
|:匹配位于|之前或者之后的字符
^:匹配行首
$:匹配行尾
?:匹配位于?之前的零個(gè)或者一個(gè)字符,不匹配多個(gè)字符
\:表示 \ 之后的為轉(zhuǎn)義字符
[]:匹配[]之中的任意單個(gè)字符,[0-9]表示匹配0到9任意一個(gè)數(shù)字
():將位于()之內(nèi)的的內(nèi)容當(dāng)作一個(gè)整體
{}:按{}中的次數(shù)進(jìn)行匹配,100[0-9]{3}表示在100之后任意匹配一個(gè)3位數(shù)(100-999)
python中以\開(kāi)頭的元字符:
特殊序列符號(hào) |
意義 |
\A |
只在字符串開(kāi)始進(jìn)行匹配 |
\Z |
只在字符串結(jié)尾進(jìn)行匹配 |
\b |
匹配位于開(kāi)始或結(jié)尾的空字符串 |
\B |
匹配不位于開(kāi)始或結(jié)尾的空字符串 |
\d |
相當(dāng)于[0-9] |
\D |
相當(dāng)于[^0-9] |
\s |
匹配任意空白字符:[\t\n\r\r\v] |
\S |
匹配任意非空白字符:[^\t\n\r\r\v] |
\w |
匹配任意數(shù)字和字母:[a-zA-Z0-9] |
\W |
匹配任意非數(shù)字和字母:[^a-zA-Z0-9] |
正則表達(dá)式語(yǔ)法表
語(yǔ)法 | 意義 | 說(shuō)明 |
"." | 任意字符 | |
"^" | 字符串開(kāi)始 | '^hello'匹配'helloworld'而不匹配'aaaahellobbb' |
"$" | 字符串結(jié)尾 | 與上同理 |
"*" |
0 個(gè)或多個(gè)字符(貪婪匹配) |
<*>匹配<title>chinaunix</title> |
"+" |
1 個(gè)或多個(gè)字符(貪婪匹配) |
與上同理 |
"?" |
0 個(gè)或多個(gè)字符(貪婪匹配) |
與上同理 |
*?,+?,?? |
以上三個(gè)取第一個(gè)匹配結(jié)果(非貪婪匹配) | <*>匹配<title> |
{m,n} |
對(duì)于前一個(gè)字符重復(fù)m到n次,{m}亦可 |
a{6}匹配6個(gè)a、a{2,4}匹配2到4個(gè)a |
{m,n}? |
對(duì)于前一個(gè)字符重復(fù)m到n次,并取盡可能少 |
‘a(chǎn)aaaaa'中a{2,4}只會(huì)匹配2個(gè) |
"\\" |
特殊字符轉(zhuǎn)義或者特殊序列 | |
[] |
表示一個(gè)字符集 | [0-9]、[a-z]、[A-Z]、[^0] |
"|" |
或 | A|B,或運(yùn)算 |
(...) |
匹配括號(hào)中任意表達(dá)式 | |
(?#...) |
注釋?zhuān)珊雎?/span> | |
(?=...) |
Matches if ... matches next, but doesn't consume the string. |
'(?=test)' 在hellotest中匹配hello |
(?!...) |
Matches if ... doesn't match next. |
'(?!=test)' 若hello后面不為test,匹配hello |
(?<=...) |
Matches if preceded by ... (must be fixed length). |
'(?<=hello)test' 在hellotest中匹配test |
(?<!...) |
Matches if not preceded by ... (must be fixed length). |
'(?<!hello)test' 在hellotest中不匹配test |
匹配的標(biāo)志和含義
標(biāo)志 | 含義 |
re.I | 忽略大小寫(xiě) |
re.L | 根據(jù)本地設(shè)置而更改\w,\W,\b,\B,\s,\S的匹配內(nèi)容 |
re.M | 多行匹配模式 |
re.S | 使“.”元字符匹配換行符 |
re.U | 匹配Unicode字符 |
re.X | 忽略需要匹配模式中的空格,并且可以使用"#"號(hào)注釋 |
文本內(nèi)容(提取Linux下的password文件)
man:x:6:12:man:/var/cache/man:/bin/nologin
re模塊中有3個(gè)搜索函數(shù),每個(gè)函數(shù)都接受3個(gè)參數(shù)(匹配模式,要匹配的字符串,進(jìn)行匹配的標(biāo)志),如果匹配到了就返回一個(gè)對(duì)象實(shí)例,么有就返會(huì)None.
findall():用于在字符串中查找符合正則表達(dá)式的字符串,并返回這些字符串的列表
search():搜索整個(gè)字符串,返回對(duì)象實(shí)例
match():只從第一個(gè)字符開(kāi)始匹配,后面的不再匹配,返回對(duì)象實(shí)例
lovelinux@LoveLinux:~/py/boke$ cat text man:x:6:12:man:/var/cache/man:/bin/sh lovelinux@LoveLinux:~/py/boke$ cat test.py #/usr/bin/env python #coding:utf-8 import re with open('text','r') as txt: f = txt.read() print re.match('bin',f) print re.search('bin',f).end() lovelinux@LoveLinux:~/py/boke$ python test.py None 34 lovelinux@LoveLinux:~/py/boke$ vim test.py lovelinux@LoveLinux:~/py/boke$ python test.py None <_sre.SRE_Match object at 0x7f12fc9f9ed0>
返回是對(duì)象實(shí)例有2個(gè)方法,
start():返回記錄匹配到字符的開(kāi)始索引
end():返回記錄匹配到字符的結(jié)束索引
lovelinux@LoveLinux:~/py/boke$ python test.py None 31 34 lovelinux@LoveLinux:~/py/boke$ cat test.py #/usr/bin/env python #coding:utf-8 import re with open('text','r') as txt: f = txt.read() print re.match('bin',f) print re.search('bin',f).start() print re.search('bin',f).end()
相關(guān)文章
Python緩存方案優(yōu)化程序性能提高數(shù)據(jù)訪問(wèn)速度
Python緩存方案是一種優(yōu)化程序性能,提高數(shù)據(jù)訪問(wèn)速度的方案。通過(guò)緩存數(shù)據(jù),可以減少重復(fù)的計(jì)算和IO操作,從而提高程序的運(yùn)行效率。Python中常用的緩存方案包括內(nèi)存緩存、磁盤(pán)緩存和分布式緩存等,根據(jù)實(shí)際需求選擇不同的方案可以幫助我們更好地優(yōu)化程序性能2023-05-05Django REST framework 如何實(shí)現(xiàn)內(nèi)置訪問(wèn)頻率控制
這篇文章主要介紹了Django REST framework 內(nèi)置訪問(wèn)頻率控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python目標(biāo)檢測(cè)非極大抑制NMS與Soft-NMS
這篇文章主要weidajia?介紹了python目標(biāo)檢測(cè)非極大抑制NMS與Soft-NMS實(shí)現(xiàn)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05pycharm部署django項(xiàng)目到云服務(wù)器的詳細(xì)流程
今天重點(diǎn)給大家介紹pycharm部署django項(xiàng)目到云服務(wù)器的詳細(xì)流程,首先大家需要先下載python3.8壓縮包,然后通過(guò)一系列命令完成操作,具體實(shí)現(xiàn)方法,跟隨小編一起看看吧2021-06-06python實(shí)現(xiàn)梯度法 python最速下降法
這篇文章主要為大家詳細(xì)介紹了python梯度法,最速下降法的原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03matplotlib.pyplot.matshow 矩陣可視化實(shí)例
這篇文章主要介紹了matplotlib.pyplot.matshow 矩陣可視化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python中eval函數(shù)的表達(dá)式作用示例
這篇文章主要介紹了Python中eval函數(shù)的表達(dá)式用法示例,文中通過(guò)示例對(duì)比來(lái)為大家進(jìn)行詳細(xì)的講解,有需要的朋友可以借鑒參下,希望有所幫助2021-09-09