日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python re正则匹配_python re正则表达式模块

發布時間:2025/3/21 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python re正则匹配_python re正则表达式模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模塊的的作用主要是用于字符串和文本處理,查找,搜索,替換等

復習一下基本的正則表達式吧

.:匹配除了換行符以為的任意單個字符

*:匹配任意字符,一個,零個,多個都能匹配得到 俗稱貪婪模式

+:匹配位于+之前的一個或者多個字符

|:匹配位于|之前或者之后的字符

^:匹配行首

$:匹配行尾

?:匹配位于?之前的零個或者一個字符,不匹配多個字符

\:表示 \ 之后的為轉義字符

[]:匹配[]之中的任意單個字符,[0-9]表示匹配0到9任意一個數字

():將位于()之內的的內容當作一個整體

{}:按{}中的次數進行匹配,100[0-9]{3}表示在100之后任意匹配一個3位數(100-999)

python中以\開頭的元字符:

轉義字符

含義

\b

匹配單詞頭或者單詞尾

\B

和\b含義相反

\d

匹配任何數字

\D

和\d含義相反,匹配任何非數字

\s

匹配任何空白字符

\S

和\s含義相反,匹配任何非空白字符

\w

匹配任何字母,數字,下劃線

\W

匹配任何非字母,數字,下劃線

匹配的標志和含義

標志

含義

re.I

忽略大小寫

re.L

根據本地設置而更改\w,\W,\b,\B,\s,\S的匹配內容

re.M

多行匹配模式

re.S

使“.”元字符匹配換行符

re.U

匹配Unicode字符

re.X

忽略需要匹配模式中的空格,并且可以使用"#"號注釋

文本內容(提取linux下的passwd文件)

1 man:x:6:12:man:/var/cache/man:/bin/nologin

View Code

re模塊中有3個搜索函數,每個函數都接受3個參數(匹配模式,要匹配的字符串,進行匹配的標志),如果匹配到了就返回一個對象實例,么有就返會None.

findall():用于在字符串中查找符合正則表達式的字符串,并返回這些字符串的列表

search():搜索整個字符串,返回對象實例

match():只從第一個字符開始匹配,后面的不再匹配,返回對象實例

1 lovelinux@LoveLinux:~/py/boke$ cat text2 man:x:6:12:man:/var/cache/man:/bin/sh3 lovelinux@LoveLinux:~/py/boke$ cat test.py4 #/usr/bin/env python

5 #coding:utf-8

6 importre7 with open('text','r') as txt:8 f =txt.read()9 print re.match('bin',f)10 print re.search('bin',f).end()11 lovelinux@LoveLinux:~/py/boke$ python test.py12 None13 34

14 lovelinux@LoveLinux:~/py/boke$ vim test.py15 lovelinux@LoveLinux:~/py/boke$ python test.py16 None17 <_sre.sre_match object at>

View Code

search()返回是對象實例有2個方法,

start():返回記錄匹配到字符的開始索引

end():返回記錄匹配到字符的結束索引

1 lovelinux@LoveLinux:~/py/boke$ python test.py2 None3 31

4 34

5 lovelinux@LoveLinux:~/py/boke$ cat test.py6 #/usr/bin/env python

7 #coding:utf-8

8 importre9 with open('text','r') as txt:10 f =txt.read()11 print re.match('bin',f)12 print re.search('bin',f).start()13 print re.search('bin',f).end()

View Code

findall():用于找找匹配的字符,把匹配到的字符作為數組返回

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 a = "man x 6 12 man / var /cache/man /bin/nologin"

5 print re.findall('[a-z]{3}\s', a)6

7 輸出結果:8 ['man', 'man', 'var', 'man']

View Code

sub():用于替換,接受四個參數,sub(匹配模式,要替換成的內容,進行替換的字符串,最大的替換次數)最后一個為可選參數.返回替換后的字符串

把只有3個字母組成的單詞替換成heihei,只替換前3個

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 a = "man x 6 12 man / var /cache/man /bin/nologin"

5 print re.sub('[a-z]{3}\s', 'heihei',a,3)6

7 輸出結果:8 heiheix 6 12 heihei/ heihei/cache/man /bin/nologin

View Code

split():用于分割字符串,接受3個參數re.split(匹配模式,要分割的字符串,最大的分割次數),最后一個為可選參數,返回分割后的字符串列表

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 a = "man x 6 12 man / var /cache/man /bin/nologin"

5 print re.split('a', a)6

7 輸出結果:8 ['m', 'n x 6 12 m', 'n / v', 'r /c', 'che/m', 'n /bin/nologin']

View Code

編譯正則表達式

compile():編譯正則表達式,返回一個正則對象實例,然后通過返回的對象實例對字符串進行查找替換,接受2個參數compile(正則表達式,匹配標志)

例子搜索web日志里面的IP

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 logstr = '192.168.1.56 - - [14/Apr/2014:01:33:06 -0400] "GET /favicon.ico HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"'

5 r = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')6 printr.findall(logstr)7

8 輸出結果:9 ['192.168.1.56']

View Code

總結

以上是生活随笔為你收集整理的python re正则匹配_python re正则表达式模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。