導航:首頁 > 編程語言 > python正則表達式匹配括弧

python正則表達式匹配括弧

發布時間:2024-11-01 19:27:45

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次

② 如何用正則表達式添加括弧

需要在查找時捕獲數字1,在[0-9]外加小括弧,就行了。

下面是python語言的例子(見圖).

③ python 正則匹配 獲取括弧內字元

* 提取字典中的【】內的字元,生成可以導入到五筆詞庫中的txt文件。

生成後的結果:

因為正則表達式語法很難讀,因此本次程序以多次的方式來講解。

括弧中的 . 表示一個字元的通配符,可以用來表示任意字元。

 +表示字元數量,數量為一個以上

【.+】表示匹配所有括弧內的字元,括弧內字元至少有一個或以上。 比如【啊】或者【阿公】就會被匹配進去,而【】就不會被匹配進去

只要用()把你想要的部分框起來就可以。比如  【(匹配的字元)】 ,最後出現的就是 匹配的字元

【.+】 =》 【(.+)】

效果:

最後結果如上,紅框裡面有哪裡不對?查看原文:

原來【阿蘭若】的前括弧 和 【蘭若】 的 後括弧 匹配了。這是因為這里使用的是貪婪模式,換句話說,

【1】【2】 匹配出來的不會是  1  2 兩個字元,而是: 1】【2

我們要把它改成懶惰模式:

【(.+)】=》【(.+?)】

那個問號表示的就是懶惰模式

④ Python中正則表達式的匹配規則總結

其他關於Python的總結文章請訪問: https://www.jianshu.com/nb/47435944

正則表達式用來匹配字元串,在python中可以使用 re 模塊來完成,本篇做一個對正則表達式的匹配規則的總結

在上述的精確匹配後可以跟上一些符號來進行模糊的匹配:

可以使用中括弧的形式進行范圍匹配,中括弧表達式後邊可以跟上上述模糊匹配的符號來表示數量

多個條件可以 緊跟著寫在同一個中括弧中 ,比如:
[a-zA-Z] :匹配一個大、小寫字母

⑤ Python正則表達式之re.match()

我們在面對生物數據,比如序列信息(比如鹼基序列、氨基酸序列等)的時候, 會時常要問,這其中是否包含著且含有多少某種已知的模式,一段DNA中是否包含轉錄起始特徵TATA box、一段RNA中是否包含某種lncRNA、一段肽鏈中是否包含鋅指結構等等;另一方面,我們在操作數據時,會時常遇到諸如把某個字元(對象)換成另一種字元(對象)的替換操作,而其本質還是如何搜索符合某種(替換)模式的對象。

在這些幾乎天天都可以碰到的 模式匹配/搜索問題中,正則表達式就是一把解決問題的利劍!
在Python的re模塊中,常用的有四個方法(match、search、findall、finditer)都可以用於匹配字元串,今天我們先來了解一下re.match()。

re.match()必須從字元串開頭匹配! match方法嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。主要參數如下:

舉個栗子來理解一下它的用法:

運行結果:

從例子中我們可以看出,re.match()方法返回一個匹配的對象,而不是匹配的內容。通過調用span()可以獲得匹配結果的位置。而如果從起始位置開始沒有匹配成功,即便其他部分包含需要匹配的內容,re.match()也會返回None。

一般一個小括弧括起來就是一個捕獲組。我們可以使用group()來提取每組匹配到的字元串。
group()會返回一個包含所有小組字元串的元組,從 0 到 所含的小組號。

直接調用groups()則直接返回一個包含所有小組字元串的元組,從 1 到 所含的小組號。
再舉一個栗子:

運行結果:

⑥ Python中的正則表達式

因為正則表達式中有兩組小括弧,即兩個分組

findall會以元組亂銷形式返回所有分組中的內容,即[('127.0.0.1', '.1')]

其中'127.0.01'表示匹配最外層大括弧的內容

'.1'表示匹配'.[0-9]{1,3}'的內容(最後一次重復時為.1)

由於('.[0-9]{1,3}')為需要重復三次的分組,該括弧不能省略

而使用findall就一定會顯示括弧分組的內容

若想只顯示127.0.0.1而不嘩梁游顯示'.1',可考慮使用match方法

返回從字元串起始位置開始,第一次匹配正則表達式的內容

match返回的結果為re.Match對象,可通過group()顯示匹配的字元串,渣襲即127.0.0.1

通過groups()顯示匹配的所有分組,即('127.0.0.1', '.1')

如圖所示:

閱讀全文

與python正則表達式匹配括弧相關的資料

熱點內容
外網伺服器地址購買 瀏覽:992
空調壓縮機電容價格 瀏覽:381
小程序選什麼雲伺服器 瀏覽:656
如何把java編譯回中文 瀏覽:777
天聯軟體伺服器地址是什麼 瀏覽:964
stc單片機加密 瀏覽:140
小程序地產廣告源碼 瀏覽:542
消費者信息加密私域 瀏覽:431
程序員開發團隊可以怎麼創業 瀏覽:925
設備共享伺服器是什麼意思 瀏覽:126
java符號類型 瀏覽:331
redis客戶端java 瀏覽:214
javatn 瀏覽:278
應用寶哪裡下載王卡免流量app 瀏覽:235
uv7代噴頭加密與不加密 瀏覽:467
滾動指標源碼查詢 瀏覽:986
夢幻西遊lua源碼修改教程 瀏覽:937
androidphp環境 瀏覽:762
php前台頁面 瀏覽:493
程序員hr怎麼挽留 瀏覽:817