GG資源網

python正則表達式問題

問題描述:

問題:字元串sText = 「#adad(1, 1)#a#bdsadsd(2,2)#b」, 如何獲取上述字元串兩個#a中間的(1,1)呢?
目前我的處理方式

python正則表達式問題

是通過兩個正則表達式獲取,但不知道怎麼把兩個表達式合併起來,求幫忙看下怎麼合併這兩個正則表達式。

網友觀點:

python re正則表達式問題列表

一.re.escape

re.escape(pattern) 可以對字元串中所有可能被解釋為正則運算符的字元進行轉義的應用函數。如果字元串很長且包含很多特殊技字元,而你又不想輸入一大堆反斜杠,或者字元串來自於用戶(比如通過raw_input函數獲取輸入的內容),且要用作正則表達式的一部分的時候,可以使用這個函數.

二.re.compile

1. 使用re.compile

re模塊中包含一個重要函數是compile(pattern [, flags]) ,該函數根據包含的正則表達式的字元串創建模式對象。可以實現更有效率的匹配。在直接使用字元串表示的正則表達式進行search,match和findall操作時,python會將字元串轉換為正則表達式對象。而使用compile完成一次轉換之後,在每次使用模式的時候就不用重複轉換。當然,使用re.compile()函數進行轉換後,re.search(pattern, string)的調用方式就轉換為 pattern.search(string)的調用方式。

其中,後一種調用方式中,pattern是用compile創建的模式對象。如下:

>>> import re

>>> some_text = 'a,b,,,,c d'

>>> reObj = re.compile('[, ]+')

>>> reObj.split(some_text)

['a', 'b', 'c', 'd']

2.不使用re.compile

在進行search,match等操作前不適用compile函數,會導致重複使用模式時,需要對模式進行重複的轉換。降低匹配速度。而此種方法的調用方式,更為直觀。如下:

>>> import re

>>> some_text = 'a,b,,,,c d'

>>> re.split('[, ]+',some_text)

['a', 'b', 'c', 'd']

三.re中findall和finditer

python正則模塊re中findall和finditer兩者相似,但卻有很大區別。
兩者都可以獲取所有的匹配結果,這和search方法有著很大的區別,同時不同的是一個返回list,一個返回一個類型的iteratorMatchObject

假設我們有這樣的數據:其中數字代表電話號,xx代表郵箱類型

由於網站搬家,部分鏈接失效,如無法下載,請聯繫站長!謝謝支持!
1. 帶 [親測] 說明源碼已經被站長親測過!
2. 下載後的源碼請在24小時內刪除,僅供學慣用途!
3. 分享目的僅供大家學習和交流,請不要用於商業用途!
4. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!
5. 本站所有資源來源於站長上傳和網路,如有侵權請郵件聯繫站長!
6. 沒帶 [親測] 代表站長時間緊促,站長會保持每天更新 [親測] 源碼 !
7. 盜版ripro用戶購買ripro美化無擔保,若設置不成功/不生效我們不支持退款!
8. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
9. 如果你也有好源碼或者教程,可以到審核區發布,分享有金幣獎勵和額外收入!
10.如果您購買了某個產品,而我們還沒來得及更新,請聯繫站長或留言催更,謝謝理解 !
GG資源網 » python正則表達式問題

發表回復

CAPTCHAis initialing...