iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
0
自我挑戰組

在資訊宅中打滾的通訊系生系列 第 27

Day-27 Python2基本語法 -7

前言

這一篇來教大家Python正則表達式!!

Python 正則表達式

作用

  • 正則表達式是一个特殊的字符序列,它能帮助你方便的檢查一個字符串是否與某種模式匹配。

re.match()

  • 藉由pattern來匹配string中的字串(需以pattern為開頭的字串,如果是字行間就不行),取出有符合的字串
import re
變數名稱 = re.match(pattern, string, flags=0)
變數名稱.group() #可呼叫出匹配成功的字串
  • pattern : 匹配的正則表達式(字串)
  • string : 要匹配的字串
  • flags : 用於設定匹配的各種模式

判斷匹配

  • 可用type()來判斷是否匹配成功
    • 成功: _sre.SRE_Match
    • 失敗: NoneType

re.search()

  • 藉由pattern來匹配string中的字串(可尋找字裡行間),取出有符合的字串
import re
變數名稱 = re.search(pattern, string, flags=0)
變數名稱.group() #可呼叫出匹配成功的字串
  • pattern : 匹配的正則表達式(字串)
  • string : 要匹配的字串
  • flags : 用於設定匹配的各種模式

判斷匹配

  • 可用type()來判斷是否匹配成功
    • 成功: _sre.SRE_Match
    • 失敗: NoneType

re.match v.s. re.search

  • re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一個匹配。

re.findall

  • 在字符串中找到正則表達式所匹配的所有子串,並返回一个列表,如果没有找到匹配的,則返回空列表。
re.findall(string[, pos[, endpos]])
  • string : 待匹配的字符串。
  • pos : 可選参数,指定字符串的起始位置,默認为 0。
  • endpos : 可選参数,指定字符串的结束位置,默認为字符串的長度。

re.sub()

  • 用於將匹配的字串取代成指定字串
import re
re.sub(pattern, repl, string, count=0, flags=0)
  • pattern : 匹配的正則表達式(字串)
  • repl : 替换的字符串,也可为一個函数。
  • string : 要被查找替换的原始字符串。
  • count : 模式匹配後替换的最大次数,默認0表示替换所有的匹配。

flag

flag 解釋
re.I 使匹配對大小寫不敏感
re.L 做本地化識別(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括換行在内的所有字符
re.U
re.X 該標誌通过给予你更靈活的格式以便你將正則表达式寫得更易于理解

範例

  1. 須注意連空白都不可以有,否則會匹配失敗
  2. group()時,需在匹配成功時,才可以呼叫成功
  3. search + group + 正則表達式
  4. findall + 正則表達式
  5. sub取代字串

上一篇
Day-26 Python2基本語法 -6
下一篇
Day-28 Python2基本語法 -8
系列文
在資訊宅中打滾的通訊系生30

尚未有邦友留言

立即登入留言