正则匹配括号里面的内容不包括括号_python正则表达式
生活随笔
收集整理的這篇文章主要介紹了
正则匹配括号里面的内容不包括括号_python正则表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
是一個計算機科學概念用于使用單個字符串來描述,匹配某個規則的字符串常常用來檢索,替換某些模式的文本使用compile將表示正則的字符串編譯為一個pattern對象 利用Pattern對象提供的方法,對文本進行匹配,獲取匹配結果 最后利用match對象提供的屬性和方法后去信息,根據需要進行操作
正則的寫法
- .(點號):表示任意一個字符,除了
- [](中括號),匹配括號中列舉的范圍,如[0-9]代表任意單個字數,[a-z]代表任意單個小寫字母
- d: 任意一個數字
- D:除了數字都可以
- s:表空格,tab鍵
- S:除了空格,tab鍵之外
- w:單詞字符,a-z,A-Z,0-9,_
- W:除了字母和數字
- *:表示前面的內容重復零次或者多次
- +:表面前面內容至少出現一次
- ?:表面前面的內容出現一次或者零次
- {m, n} :出現m到n次
- ^ :匹配字符串的開頭
- $:匹配字符串的結尾
- ():對正則表達式的內容進行分組,從第一個括號開始
- A:匹配字符串開始
- Z:匹配字符串末尾
- |:左右任意一個
使用大致步驟
常用匹配方法
match匹配
- 必須從第一個字符開始就能匹配上,否則匹配失敗
- 返回的結果只有一個,并且支持group分組
返回結構體re.Match
- span:表示匹配的跨度,從哪里匹配,到哪里結束,左包括右邊不包括
- group:表示匹配的組,如果只有一組則直接打印內容
- start:顯示開始匹配的字符串的位置
- end:表示結束字符串的位置
- groups:當正則里面出現括號時搭配使用
search匹配
- 與match基本一致,也只返回一個結果
- 但是可以不用從開頭位置匹配
- 返回一個結果,支持group分組
findall匹配
- 匹配所有能匹配到的結果
- 不支持group分組,默認返回一個列表
finditer匹配
- 匹配所有能匹配到的結果
- 默認返回一個迭代,由re.Match迭代而成,可以通過for循環取出
- re.Match支持group分組
sub替換
- 可以用sub替換要匹配的字符
- sub為批量替換,即可以替換多個位置
group與groups的區別
- group與groups都屬于re.Match的內置屬性
- group用于直接顯示匹配結果,而groups用于提取匹配結果中的值
- 以提取百度網頁title為例
正則表達式修飾符
re.I演示
假設想要匹配所有字母,不區分大小寫
import retext1 = 'shdfi1234SHDFISHDI'p = re.compile('[a-z]+', re.I) # 不區分大小寫,所有字母都匹配result = p.findall(text1)print(result)"""['shdfi', 'SHDFISHDI']"""re.M演示
- 假設匹配以sh開頭以2結尾的字符串
re.S演示
- 假設匹配一個d..I的字符串
匹配中文
- 匹配中文[一-龥],不包括全角標點
貪婪匹配與非貪婪匹配
. *和.*?
import retext = '12ddd345'# 匹配一個數字開頭數字結尾的字符串p1 = re.compile('[0-9].*[0-9]') # 貪婪模式p2 = re.compile('[0-9].*?[0-9]') # 非貪婪模式result1 = p1.search(text)result2 = p2.search(text)print(result1.group())print(result2.group())"""12ddd34512"""- 正則表達式默認使用貪婪匹配
- 如果使用非貪婪匹配
總結
以上是生活随笔為你收集整理的正则匹配括号里面的内容不包括括号_python正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝理财怎么转出来?支付宝的理财取出步
- 下一篇: 由于在客户端检测到一个协议错误_TLS协