Python第六周 學習筆記(2)

來源:互聯網
上載者:User

標籤:學習筆記   Regex   

Regex基本文法元字元
代碼 說明 舉例
. 匹配除分行符號外任意一個字元
[abc] 字元集合,只能表示一個字元位置。匹配所包含的任意一個字元
[^abc] 字元集合,只能表示一個字元位置。匹配除去集合內字元的任意一個字元
[a-z] 字元範圍,一個集合,表示一個字元位置匹配所包含的任意一個字元
[^a-z] 字元範圍,一個集合,表示一個字元位置匹配除去集合內字元的任意一個字元
\b 匹配單詞的邊界
\B 不匹配單詞的邊界
\d 等同[0-9] 匹配一位元字
\D 等同[^0-9] 匹配一位非數字
\s 匹配1位空白字元,包括分行符號、定位字元、空格等同[\f\r\n\t\v]
\S 匹配1位非空白字元
\w 等同[a-zA-Z0-9_] 包含中文
\W 匹配\w之外的字元
轉義
  • 凡是在Regex中有特殊意義的符號,轉義時使用\
重複
代碼 說明 舉例
* 前面的Regex重複0次或多次
+ 前面的Regex重複至少一次
前面的Regex重複0次或1次
{n} 重複n次
{n,} 重複n次以上
{n,m} 重複n到m次
分組(捕獲)斷言
代碼 說明 舉例
x y 匹配x或y
(pattern) 分組(捕獲)後會自動分配組號從1開始可以改變優先順序 \數字 匹配對應的分組(指的是前一個匹配上的分組的內容)
(?:pattern) 只改變優先順序不分組
(?<name>exp)(?nameexp) 分組捕獲 給組命名Python句法為(?P<name>exp)
(?=exp) 零寬度正預測先行斷言斷言exp一定在匹配的右邊出現
(?<=exp) 零寬度正回顧後發斷言斷言exp一定出現在匹配的左邊出現
(?!exp) 零寬度負預測先行斷言斷言exp一定不會出現在右側
(?<!exp) 零寬度負回顧後發斷言斷言exp一定不會出現在左側
(?#comment) 注釋

斷言不會佔用分組號

貪婪與非貪婪
  • 預設貪婪模式,儘可能多的匹配字串
代碼 說明 舉例
*? 匹配任意次,儘可能少重複
+? 匹配至少一次,儘可能少重複
?? 匹配0或1次,儘可能少重複
{n}? 匹配至少n次,儘可能少重複
{n,m}? 匹配至少n次,至多m次,儘可能少重複
引擎選項
代碼 說明 舉例
IgnoreCase 匹配時忽略大小寫 re.Ire.IGNORECASE
Singleline 單行模式,可穿透/n re.Sre.DOTALL
Multiline 多行模式 re.Mre.MULTILINE
IgnorePatternWhitespace 忽略運算式中空白字元,若要使用空白字元 re.Xre.VERBOSE

代碼 說明 舉例
IgnoreCase 匹配時忽略大小寫 re.Ire.IGNORECASE
Singleline 單行模式,可穿透/n re.Sre.DOTALL
Multiline 多行模式 re.Mre.MULTILINE
IgnorePatternWhitespace 忽略運算式中空白字元,若要使用空白字元 re.Xre.VERBOSE

Python中使用|(位或)運算開啟多種選項

PythonRegexre模組編譯
  • re.compile(pattern, flags=0)
    • 返回Regex對象regex
    • Regex編譯的結果儲存,下次使用同樣的pattern時不需要重新編譯
單次匹配
  • regex.match(string[, pos[, endpos]])

    • 從字串開頭匹配,可指定開始與結束位置 返回match對象
  • regex.search(string[, pos[, endpos]])

    • 從頭搜尋直到第一個匹配,可指定開始與結束位置 返回match對象
  • regex.fullmatch(string[, pos[, endpos]])
    • 整個字串與Regex匹配
全文檢索搜尋
  • regex.findall(string[, pos[, endpos]])

    • 對整個字串從左至右匹配,返回所有匹配項的列表
  • regex.finditer(string[, pos[, endpos]])
    • 對整個字串,從左至右匹配,返回所有匹配項的迭代器,每項都是match對象
匹配替換
  • regex.sub(replacement, string, count=0)

    • 使用pattern對字串string進行匹配,對匹配項用replacement替換
    • replacement可以是string、bytes、function
  • regex.subn(replacement, string, count=0)
    • 功能類似sub 返回一個元組 (new_string, number_of_subs_made)
分割字串
  • regex.split(string, maxsplit=0)
    • 返回列表
分組
  • 使用(pattern)捕獲的資料放到組中

  • match類方法
  • group(N)

    • 1-N時對應的分組 0但會整個匹配的字串
    • 如果使用了命名分組,可用group(name)方式取出
  • groups()

    • 返回所有組的一個元組
  • groupdict()
    • 返回所有命名分組的字典
TODO:argparse

Python第六周 學習筆記(2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.