日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python正则表达式_Python正则表达式简记和re库!

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python正则表达式_Python正则表达式简记和re库! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正則表達式是定義搜索模式的字符序列。通常這種模式被字符串搜索算法用于字符串上的“查找”或“查找和替換”操作,或者用于輸入驗證。

1. 正則表達式的語法

  • . 表示任何單個字符
  • [] 字符集,對單個字符給出取值范圍
  • [^] 非字符集,對單個字符給出排除范圍
  • *前一個字符0次或者無限次擴展
  • +前一個字符1次或無限次擴展
  • ?前一個字符0次或1次擴展
  • |左右表達式任意一個
  • {m}擴展前一個字符m次
  • {m,n}擴展前一個字符m至n次
  • ^匹配字符串開頭
  • $匹配字符串結尾
  • ()分組標記,內部只能使用|操作符
  • d數字,等價于[0-9]
  • w單詞字符,等價于[A-Z,a-z,0-9]

2. python中re庫的使用

Re庫是python的標準庫,主要用于字符串匹配,調用方法:import re

2.1. 正則表達式字符串的類型

re庫采用raw string類型來表示正則表達式,表示為

r'text'

raw string是不包含對轉義符的再次轉義的字符串,總而言就是string會對字符轉義,而raw string不會,因為在正則表達中會出現轉義符號,所以避免繁瑣我們使用raw string

2.2. Re庫主要功能函數

  • re.search ()在一個字符串中搜索正則表達式的第一個位置,返回match對象
  • re.match() 從一個字符串的開始位置起匹配正則表達式,返回match對象
  • re.findall() 搜索字符串,以列表類型返回全部能匹配的子串
  • re.split() 將一個字符串按照正則表達式匹配結果進行分割,返回列表類型
  • re.finditer() 搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是match對象
  • re.sub() 在一個字符串中替換所有匹配正則表達式的子串,返回替換后的字符串

2.2.1. re.search(pattern, string, flags=0)

在一個字符串中搜索正則表達式的第一個位置,返回match對象

  • pattern : 正則表達式的字符串或原生字符串表示
  • string : 待匹配字符串
  • flags : 正則表達式使用時的控制標記
  • re.I re.IGNORECASE 忽略正則表達式的大小寫,[A‐Z]能夠匹配小寫字符
  • re.M re.MULTILINE 正則表達式中的^操作符能夠將給定字符串的每行當作匹配開始
  • re.S re.DOTALL 正則表達式中的.操作符能夠匹配所有字符,默認匹配除換行外的所有字符

舉例說明:

import rematch = re.search(r'[1-9]d{5}', 'BIT 100081')if match: print(match.group(0))結果為100081

2.2.2. re.match(pattern, string, flags=0)

從一個字符串的開始位置起匹配正則表達式,返回match對象

參數同search函數

舉例說明:

import rematch = re.match(r'[1-9]d{5}', 'BIT 100081')print(match.group(0))結果會報錯,match為空,因為match函數是從字符串開始位置開始匹配,因為從開始位置沒有匹配到,所以為空

2.2.3. re.findall(pattern, string, flags=0)

搜索字符串,以列表類型返回全部能匹配的子串

參數同search

舉例說明:

import rels=re.findall(r'[1-9]d{5}', 'BIT100081 TSU100084')print(ls)結果為['100081', '100084']

2.2.4. re.split(pattern, string, maxsplit=0, flags=0)

將一個字符串按照正則表達式匹配結果進行分割返回列表類型

  • maxsplit : 最大分割數,剩余部分作為最后一個元素輸出

舉例說明 :

import rere.split(r'[1-9]d{5}', 'BIT100081 TSU100084')結果['BIT', ' TSU', ' ']re.split(r'[1-9]d{5}', 'BIT100081 TSU100084', maxsplit=1)結果['BIT', ' TSU100081']

2.2.5. re.finditer(pattern, string, maxsplit=0, flags=0)

搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是match對象

參數同search

舉例說明 :

import refor m in re.finditer(r'[1-9]d{5}', 'BIT100081 TSU100084'): if m: print(m.group(0))結果為100081100084

2.2.6. re.sub(pattern, repl, string, count=0, flags=0)

在一個字符串中替換所有匹配正則表達式的子串返回替換后的字符串

  • repl : 替換匹配字符串的字符串
  • count : 匹配的最大替換次數

舉例說明:

import rere.sub(r'[1-9]d{5}', ':zipcode', 'BIT100081 TSU100084')結果為'BIT:zipcode TSU:zipcode'

2.3 Re庫的另一種等價用法(面向對象)

rst=re.search(r'[1-9]d{5}', 'BIT 100081')函數式的調用,一次性操作pat=re.compile(r'[1-9]d{5}')rst=pat.search('BIT 100081')編譯后多次操作

regex=re.complie(pattern,flags=0)

regex也有以上六種用法

2.4 Re庫的Match對象

Match對象是是一次匹配的結果,包含匹配的很多信息

以下是Match對象的屬性

  • .string 待匹配的文本
  • .re 匹配時使用的patter對象(正則表達式)
  • .pos 正則表達式搜索文本的開始位置
  • .endpos 正則表達式搜索文本的結束位置

以下是Match對象的方法

  • .group(0) 獲得匹配后的字符串
  • .start() 匹配字符串在原始字符串的開始位置
  • .end() 匹配字符串在原始字符串的結束位置
  • .span() 返回(.start(), .end())

2.5 Re庫的貪婪匹配和最小匹配

當正則表達式可以匹配長短不同的多項時,返回哪一個呢?Re庫默認采用貪婪匹配,即返回匹配最長的子串

最小匹配

  • *? 前一個字符0次或無限次擴展,最小匹配
  • +? 前一個字符1次或無限次擴展,最小匹配
  • ?? 前一個字符0次或1次擴展,最小匹配
  • {m,n}? 擴展前一個字符m至n次(含n),最小匹配

只要長度輸出可能不同的,都可以通過在操作符后增加?變成最小匹配

總結

以上是生活随笔為你收集整理的python正则表达式_Python正则表达式简记和re库!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。