當前位置:首頁 » 編程語言 » python正則換行

python正則換行

發布時間: 2023-02-27 23:18:50

python下正則表達式匹配包括換行符,語句怎麼寫求幫忙!

import re
matchs=re.finditer(r'<dd>(.*?)</dd>',htmltext,re.S)
for match in matchs:
print(match.group(1))
匹配時指定re.S可以讓點匹配所有字元,包括換行符

Ⅱ 正則表達式在python中選取指定字元,包括換行符

d+[sS]*?|[01]

如圖

Ⅲ 趣玩Python第16關:3個技巧掌握正則

字元串的匹配查詢

Python中的re模塊中的findall函數可以對指定的字元串進行遍歷匹配,如下:

findall(pattern, string, flags=0)

pattern:指定需要匹配的正則表達式。

string:指定待處理的字元串。

flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。re.I的模式是讓正則表達式對大小寫不敏感;re.M的模式是讓正則表達式可以多行匹配;re.S的模式指明正則符號.可以匹配任意字元,包括換行符 ;re.X模式允許正則表達式可以寫得更加詳細,如多行表示、忽略空白字元、加入注釋等。

字元串的匹配替換

re模塊中的sub函數的功能是替換,類似於字元串的replace方法,該函數根據正則表達式把滿足匹配的內容替換為repl,如下:

sub(pattern, repl, string, count=0, flags=0)

pattern:同findall函數中的pattern。

repl:指定替換成的新值。

string:同findall函數中的string。

count:用於指定最多替換的次數,默認為全部替換。

flags:同findall函數。

字元串的匹配分割

re模塊中的split函數是將字元串按照指定的正則表達式分隔開,類似於字元串的split,如下:

split(pattern, string, maxsplit=0, flags=0)

pattern:同findall函數中的pattern。

maxsplit:用於指定最大分割次數,默認為全部分割。

string:同findall函數中的string。

flags:同findall函數中的flags。

以上就是本次分享的全部內容了,不知大家對我講述的Python正則表達式妙用感覺怎麼樣?

腦筋急轉彎:有人想喝點牛奶解渴,卻一命嗚呼了,為什麼?

Ⅳ python的正則表達式

1,正則表達式的一些內容

        正則表達式主要是用來匹配文本中需要查找的內容,例如在一片文章中找出電話號碼,就中國的來說11位純數字(不說座機),則使用"d{11}" 意味匹配數字11次,就能准確的查找出文本中的電話號碼. 還有就是在編寫網路爬蟲的時候需要提取很多超鏈接再次進行爬取,使用正則表達式就很方便.直接匹配http開頭就行,當然也可以使用beautifulsoup的select方法.

看下面的程序看看正則表達提取文本中的郵箱:


w 匹配字母,數字,下劃線 

+ 匹配1次或者多次
re是正則表達式的工具包,工具包出錯的話在anaconda的命令行輸入"pip install re"安裝,其他的工具包也是如此.

re.compile()中的r示意不是轉義字元,也就是保持後面字元串原樣,findall返回一個列表.下面還有一個版本的程序略有不同.


compile的另一個參數re.IGONORECASE(忽略大小寫),還可以是re.DORALL,多行模式,具體功能也是模糊不清,不過在使用通配符 . 匹配的時候加上re.DOTALL參數能夠匹配換行.如果希望忽略大小寫和多行模式都開啟可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .

表達式使用( ),對匹配到的內容分為3組 也就是(w+)出現字母,數字,下劃線一次或多次,這個分組就是下面使用match對象的grou()方法的時候的參數.不給參數和參數0都是得到整個匹配到的內容,  參數1得到第一個括弧匹配到的內容,以此類推參數2和3,如果沒有括弧分組的話使用參數會出現錯誤.
search( )查找和正則式匹配的內容,只匹一次後面的那個找不到.返回一個match對象


w 匹配字母,數字,下劃線

W 匹配字母,數字.下劃線之外的所有字元

d 匹配數字

D 匹配非數字

s 匹配空格,製表符,換行符

S匹配除空格製表符,換行符之外的其他字元

[ .... ]定義自己的匹配,如[aeiouAEIOU ]匹配所有的母音字母,注意不是匹配單詞.

{最少次數,最多次數},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默認為匹配最多次數(貪心匹配),非貪心模式在後面加上問號 


?  可選 0次或者1次吧  

+匹配1次或多次

*匹配0次或者多次

^ 判斷開頭 ^d 如果待匹配串是數字開頭則返回第一個數字

$判斷結尾  d$  如果待匹配串是數字結尾則返回最後一個數字

.   通配符,匹配除換行之外的所有字元

   d{11}  匹配數字11次

    . * 匹配所有字元除 換行

[a-zA-Z0-9._%+-]  小寫和大寫字母、數字、句點、下劃線、百分號、加號或短橫

[a-zA-Z]{2,4} 匹配字母 2 - 4次

Ⅳ Python常用的正則表達式處理函數詳解

正則表達式是一個特殊的字元序列,用於簡潔表達一組字元串特徵,檢查一個字元串是否與某種模式匹配,使用起來十分方便。

在Python中,我們通過調用re庫來使用re模塊:

import re

下面介紹Python常用的正則表達式處理函數。

re.match函數

re.match 函數從字元串的起始位置匹配正則表達式,返回match對象,如果不是起始位置匹配成功的話,match()就返回None。

re.match(pattern, string, flags=0)

pattern:匹配的正則表達式。

string:待匹配的字元串。

flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。具體參數為:

re.I:忽略大小寫。

re.L:表示特殊字元集 w, W, , B, s, S 依賴於當前環境。

re.M:多行模式。

re.S:即 . ,並且包括換行符在內的任意字元(. 不包括換行符)。

re.U:表示特殊字元集 w, W, , B, d, D, s, S 依賴於 Unicode 字元屬性資料庫

re.X:為了增加可讀性,忽略空格和 # 後面的注釋。

import re #從起始位置匹配 r1=re.match('abc','abcdefghi') print(r1) #不從起始位置匹配 r2=re.match('def','abcdefghi') print(r2)

運行結果:

其中,span表示匹配成功的整個子串的索引。

使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。

group(num):匹配的整個表達式的字元串,group() 可以一次輸入多個組號,這時它將返回一個包含那些組所對應值的元組。

groups():返回一個包含所有小組字元串的元組,從 1 到 所含的小組號。

import re s='This is a demo' r1=re.match(r'(.*) is (.*)',s) r2=re.match(r'(.*) is (.*?)',s) print(r1.group()) print(r1.group(1)) print(r1.group(2)) print(r1.groups()) print() print(r2.group()) print(r2.group(1)) print(r2.group(2)) print(r2.groups())

運行結果:

上述代碼中的(.*)和(.*?)表示正則表達式的貪婪匹配與非貪婪匹配。

re.search函數

re.search函數掃描整個字元串並返回第一個成功的匹配,如果匹配成功則返回match對象,否則返回None。

re.search(pattern, string, flags=0)

pattern:匹配的正則表達式。

string:待匹配的字元串。

flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。

import re #從起始位置匹配 r1=re.search('abc','abcdefghi') print(r1) #不從起始位置匹配 r2=re.search('def','abcdefghi') print(r2)

運行結果:

使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。

group(num=0):匹配的整個表達式的字元串,group() 可以一次輸入多個組號,這時它將返回一個包含那些組所對應值的元組。

groups():返回一個包含所有小組字元串的元組,從 1 到 所含的小組號。

import re s='This is a demo' r1=re.search(r'(.*) is (.*)',s) r2=re.search(r'(.*) is (.*?)',s) print(r1.group()) print(r1.group(1)) print(r1.group(2)) print(r1.groups()) print() print(r2.group()) print(r2.group(1)) print(r2.group(2)) print(r2.groups())

運行結果:


從上面不難發現re.match與re.search的區別:re.match只匹配字元串的起始位置,只要起始位置不符合正則表達式就匹配失敗,而re.search是匹配整個字元串,直到找到一個匹配為止。

re.compile 函數

compile 函數用於編譯正則表達式,生成一個正則表達式對象,供 match() 和 search() 這兩個函數使用。

re.compile(pattern[, flags])

pattern:一個字元串形式的正則表達式。

flags:可選,表示匹配模式,比如忽略大小寫,多行模式等。

import re #匹配數字 r=re.compile(r'd+')  r1=r.match('This is a demo') r2=r.match('This is 111 and That is 222',0,27) r3=r.match('This is 111 and That is 222',8,27)   print(r1) print(r2) print(r3)

運行結果:

findall函數

搜索字元串,以列表形式返回正則表達式匹配的所有子串,如果沒有找到匹配的,則返回空列表。

需要注意的是,match 和 search 是匹配一次,而findall 匹配所有。

findall(string[, pos[, endpos]])

string:待匹配的字元串。

pos:可選參數,指定字元串的起始位置,默認為0。

endpos:可選參數,指定字元串的結束位置,默認為字元串的長度。

import re #匹配數字 r=re.compile(r'd+')  r1=r.findall('This is a demo') r2=r.findall('This is 111 and That is 222',0,11) r3=r.findall('This is 111 and That is 222',0,27)   print(r1) print(r2) print(r3)

運行結果:

re.finditer函數

和 findall 類似,在字元串中找到正則表達式所匹配的所有子串,並把它們作為一個迭代器返回。

re.finditer(pattern, string, flags=0)

pattern:匹配的正則表達式。

string:待匹配的字元串。

flags:標志位,用於控制正則表達式的匹配方式,如是否區分大小寫,多行匹配等。

import re  r=re.finditer(r'd+','This is 111 and That is 222') for i in r:   print (i.group())

運行結果:

re.split函數

將一個字元串按照正則表達式匹配的子串進行分割後,以列表形式返回。

re.split(pattern, string[, maxsplit=0, flags=0])

pattern:匹配的正則表達式。

string:待匹配的字元串。

maxsplit:分割次數,maxsplit=1分割一次,默認為0,不限次數。

flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等。

import re  r1=re.split('W+','This is 111 and That is 222')  r2=re.split('W+','This is 111 and That is 222',maxsplit=1)  r3=re.split('d+','This is 111 and That is 222')  r4=re.split('d+','This is 111 and That is 222',maxsplit=1)  print(r1) print(r2) print(r3) print(r4)

運行結果:

re.sub函數

re.sub函數用於替換字元串中的匹配項。

re.sub(pattern, repl, string, count=0, flags=0)

pattern:正則中的模式字元串。

repl:替換的字元串,也可為一個函數。

string:要被查找替換的原始字元串。

count:模式匹配後替換的最大次數,默認0表示替換所有的匹配。

import re  r='This is 111 and That is 222' # 刪除字元串中的數字 r1=re.sub(r'd+','',r) print(r1) # 刪除非數字的字元串  r2=re.sub(r'D','',r) print(r2)

運行結果:

到此這篇關於Python常用的正則表達式處理函數詳解的文章就介紹到這了,希望大家以後多多支持!

Ⅵ python正則表達式是什麼

python正則表達式是使用單個字元串來描述、匹配某個句法規則的字元串,常被用來檢索、替換那些符合某個模式(規則)的文本。最初的正則表達式出現於理論計算機科學的自動控制理論和形式化語言理論中。

1950 年,數學家斯蒂芬·科爾·克萊尼利用稱之為「正則集合」的數學符號來描述此模型。肯·湯普遜將此符號系統引入編輯器 QED,隨後是 UNIX 上的編輯器 ed,並最終引入 grep。自此以後,正則表達式被廣泛地應用於各種 UNIX 或類 UNIX 系統的工具中。目前,許多程序設計語言都支持利用正則表達式進行字元串操作。

正則表達式常用的特殊字元:

:將下一個字元標記為一個特殊字元、一個原義字元(Identity Escape,有 "^" "$" "(" ")" "*" "+" "{" "|" 共計12個)、一個向後引用(backreferences)或一個八進制轉義符。例如「n」匹配字元「n」,「 」匹配一個換行符,「\」匹配「」,「(」則匹配「(」。

^:匹配輸入字元串的開始位置。如果設置了正則表達式的多行屬性,「^」也可以匹配「 」或「 」之 後的位置。

[a-z]:字元范圍,匹配指定范圍內的任意字元。例如「[a-z]」可以匹配「a」到「z」范圍內的任意小寫字母字元。

s:匹配任何空白字元,包括空格、製表符、換頁符等,等效於「[f v]」。注意 Unicode 正則表達式 會匹配全形空格符。

Ⅶ python正則表達式 有換行符怎麼辦

import re
matchs=re.finditer(r'<dd>(.*?)</dd>',htmltext,re.S)
for match in matchs:
print(match.group(1))
匹配時指定re.S可以讓點匹配所有字元,包括換行符

Ⅷ python正則表達式中re.compile('\\\n')匹配的為什麼是換行符

你這個\\\n等同於\n,\n是換行符的意思,\後面如果不是什麼t,r,n之類的,表示他的\後面的那個東西是沒有意義的

\\,第一個反斜杠表示轉義,意思是第二反斜杠不再視為一個轉義字元。
在python看來\\字元,實際上只是一個\反斜杠。

Ⅸ python正則表達式是什麼

python正則表達式是:

'hing'

'wing'

'123456'

'dddddd'

'regex.py'

'.*.py'

正則表達式(簡稱為 regex)是一些由字元和特殊符號組成的字元串, 描述了模式的重復或者表述多個字元。正則表達式能按照某種模式匹配一系列有相似特徵的字元串。換句話說, 它們能夠匹配多個字元串。

孤立的一個正則表達式並不能起到匹配字元串的作用,要讓其能夠匹配目標字元,需要創建一個正則表達式對象。通常向compile()函數傳入一個原始字元形式的正則表達式,即 r'.....'。

要讓正則表達式不區分大小寫,可以向re.compile()傳入re.IGNORECASE或re.I,作為第二個參數。通過傳入re.DOTALL作為re.compile()的第二個參數,可以讓句點字元匹配所有字元,包括換行字元。

熱點內容
解壓分卷失敗 發布:2024-11-07 18:32:56 瀏覽:974
oracle導出資料庫表數據 發布:2024-11-07 18:24:57 瀏覽:449
java新建文件夾 發布:2024-11-07 18:24:21 瀏覽:640
服務的mysql腳本引導不上 發布:2024-11-07 18:19:25 瀏覽:878
win7下載文件夾恢復 發布:2024-11-07 18:18:36 瀏覽:221
酷狗號密碼忘了怎麼辦 發布:2024-11-07 18:03:13 瀏覽:87
mupdf編譯 發布:2024-11-07 18:02:58 瀏覽:32
sql時間篩選 發布:2024-11-07 17:59:53 瀏覽:860
為什麼開機密碼老不對 發布:2024-11-07 17:49:41 瀏覽:228
java源碼編譯 發布:2024-11-07 17:34:59 瀏覽:916