1. 程式人生 > >Python基礎之re模塊

Python基礎之re模塊

== 時區 三種 第一個 特殊功能 之間 指定 特殊字符 asdf

什麽是模塊?

  為了編寫可維護的代碼,我們把很多的函數分組,分別放到不同的文件裏,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式,在Python中,一個.py文件就稱為一個模塊

模塊的作用?

  使用模塊的好處 大大提高了代碼的可維護性 其次 編寫代碼不必從零開始 當一個模塊編寫完畢 就可以被其他地方引用 我們在編寫程序的時候,也就經常使用其他模塊 包括Python內置的模塊和來自第三方的模塊; 另外使用模塊可以避免函數名和變量名沖突。

re模塊

  re模塊是python標準庫(Python中已經定義好的)裏面的一個模塊,主要用於模糊查詢,應用方面為WEB 、爬蟲等; re 模塊 就其本質而言,正則表達式(或re)是一種小型的,高度專業的編程語言,(在Python中) 它內嵌在Python中,並通過re模塊實現,正則表達式模式被編譯成一系列的字節碼,然後由 C編寫的匹配引擎執行。

  re模塊使用元字符去匹配數據,元字符包括:

    . 通配符(可以匹配任意類型的數據)

    ^ 從開頭開始匹配

    $ 結尾符 (返回以指定內容結尾的數據)

    * 匹配(0,+00)次

    + 匹配(1,+00)次

    ? 匹配(0,1)次

    {} 可以代替之前的三種情況 {0,}== * {1,}==+ {0,1}==? {6}匹配重復6次

    [a-z] 表示範圍 re.findall(‘q[a-z]‘, ‘quojqkjhk‘) re.findall(‘q[a-z]*‘, ‘quojqkjhk‘) 匹配多次 re.findall(‘q[^a-z]*‘, ‘quojqkjhk‘) 匹配不是以q開頭後面是字母的

數據

     [xyz] 字符集 匹配字符集中的任何一個字符

    \ 去掉轉義 使元字符失去特殊功能

    () 分組 將()之間的內容定義為組,並且將匹配這個字符的表達式暫存在一個臨時區域

     | 表示或運算

  反斜杠後邊跟普通字符實現特功能:

     \d   匹配十進制數 它相當於類[0-9] 將每個數字分成單個方式展示 \d+ 可以展示十位數或者百位數
    \D   匹配任何非數字字符 它相當於類[^0-9]
    \s   匹配任何空白字符 它相當於類[\+\n\r\f\v]
    \S   匹配任何非空白字符 它相當於類[^\+\n\r\f\v]
    \w   匹配任何字母數字字符 它相當於類[a-zA-Z0-9_]


    \W  匹配任何非字母數字字符 它相當於類[^a-z A-Z 0-9_]
    \b   匹配一個特殊字符邊界 比如空格 & #等

       r 或者 \\ 去掉特殊意義

  分組

    re.search("(?P<name>[a-z]+)\(?P<age>\d+)", "alex36wusir34xialv33").gruop(‘name‘)

   re模塊使用的函數:

    

    findall() 把返回的結果放在列表中
   search() 函數在字符串內查找模式匹配 只找到第一個匹配然後返回一個對象
   search.gruop() 通過調用group()方法得到匹配的字符串 如果字符串沒有匹配則返回空
   match() 匹配成功就返回一個對象 不成功就什麽都不返回 與search 不同的是它只在開始位置進行匹配
   spilt() 按照指定的字符將帶匹配對象進行分割 被分割的位置用空白代替
   sub() 用指定的字符去替換帶替換的對象
      re.sub(‘\d+‘,‘A‘,‘jadsk56469adsdfsdf35464‘)

      re.sub(‘\d‘,‘A‘,‘jadsk56469adsdfsdf35464‘)

      re.sub(‘\d‘,‘A‘,‘jadsk56469adsdfsdf35464‘, 5)

      re.subn(‘\d‘, ‘A‘, ‘jafdsf2313asfdsd5534‘) 返回替換的結果和替換的次數

   compile() re.compile(‘‘) 編譯想要匹配的規則 com=compile(‘\d+‘) com.findal(‘asdfds23asdf‘) 這樣做可以使用多次


   finditer() 將返回結果存在叠代器中 使用的時候 next = re.finditer(‘\d‘,‘asfdds231dsfs‘) next(ret).group()    

   去優先級 re.findall(‘www\.(?:baidu|163)\.com‘, ‘afsdfdsf.163.comsdafsdf‘)  

Python基礎之re模塊