pyqt學習基礎 -插曲- python 正則表達式學習

python 正則表達式學習

資源來自

學習資源來自ubuntu wikipython

正則表達式介紹

正則表達式,各類語言都有相關的庫。就其本質而言,正則表達式(或 RE)是一種小型的、高度專業化的編程語言正則表達式

簡單模式

字符匹配

  1. _大多數_字母和字符通常都會和自身匹配。例如,正則表達式 test 會和字符串「test」徹底匹配。
  2. 正則表達式使用一些元字符來幫助字符匹配: <pre><code>. ^ $ * + ? { [ ] \ | ( ) </code></pre>

"[" 和 "]"

"[" 和 "]" : 它們經常使用來指定一個字符類別,所謂字符類別就是你想匹配的一個字符集。 字符能夠單個列出,也能夠用"-"分隔表示區間[a-z].編程

\

\d : 至關於[0-9] \D : 匹配任何非數字字符;至關於[^0-9] \s : 匹配任何空白字符;至關於[ \t\n\r\f\v ] \S : 匹配任何非空白字符;至關於[^ \t\n\r\f\v ] '\w' : 匹配任何字母數字字符;至關於[a-zA-Z0-9_] \W : ...; 至關於[^a-zA-Z0-9_] 舉個栗子:[\s,.]將匹配任何空白字符","或者"."ubuntu

重複

正則表達式的另外一個功能是你能夠指定正則表達式的一部分的重複次數。markdown

「*」

  • 咱們先來看第一個重複功能的元字符* . * 並不匹配字符"*";他能夠指定前一個字符能夠被 匹配0次或者屢次。"ca*t" 能夠匹配 "ct","caaat"

"+"

  • 「+」 表示匹配一次或者屢次,最少一次。"ca+t"能夠匹配"cat"caaat"但不能夠"ct".
  • {m,n}(注意m,n中不能有空格),它的意思是至少m個重複,最多n個重複。 {0,} 等同於 *,{1,} 等同於 +,而{0,1}則與 ? 相同。若是能夠的話,最好使用 *,+,或?。很簡單由於它們更短也更容易懂。

正則表達式在python中的應用

編譯正則表達式

正則表達式被編譯成 RegexObject 實例,能夠爲不一樣的操做提供方法,如模式匹配搜索或字符串替換。編程語言

<pre><code> import re p = re.compile('ab\*') print p <\_sre.SRE\_Pattern object at 0xb76e1a70> </code></pre>學習

反斜槓的麻煩

  • 要匹配反斜槓,就要2個反斜槓(markdown中寫反斜槓麻煩,我就用文字代替) 這樣寫,可是在python中,反斜槓原本就要2個反斜槓,因此就會須要4個反斜槓來匹配反斜槓
  • 因此就有了r'',字符串前加個 "r" 反斜槓就不會被任何特殊方式處理。因此 r"\n" 就是包含"" 和 "n" 的兩個字符,而 "\n" 則是一個字符,表示一個換行。正則表達式一般在 Python 代碼中都是用這種 raw 字符串表示。

執行匹配

幾個重要的方法(regexobject的方法): match() : 決定re是否在字符串剛開始的位置匹配 search() : 掃描字符串,找到這個re匹配的位置 findall() : 找到re匹配的全部子串,做爲一個列表返回 finditer() : 找到re匹配的全部自串,並把他們做爲一個迭代器返回spa

幾個MatchObject的重要方法:.net

<pre><code> >>> m = p.match( 'tempo') >>> print m <_sre.SRE_Match object at 80c4f68> </code></pre>code

group() : 返回被re匹配的字符串 start() : 返回匹配開始的位置 end() : 返回結束的位置 span() : 返回一個元組包含匹配(開始,結束)的位置

舉幾個栗子

<!-- lang: python -->
import re
str = "http://www.oschina.net/?code=QlSJi2&state="
pattern = re.compile('code=\w+\&')

match = pattern.search(str)
if match:
    print match.group(), match.span()
相關文章
相關標籤/搜索