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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

9月11日学习内容整理:正则表达式,re模块

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9月11日学习内容整理:正则表达式,re模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、正則表達式:正則是很大的一個知識點,不會僅僅是下面這些東西

1、概念:正則表達式就是一種對字符串匹配的規則,注意是只對字符串,正則表達式和python沒啥關系,

2、表達式:

(1)字符集:用中括號表示,例如[1-9],[012345],[a-z1-9],[A-z]

字符集代表的是一個字符的匹配規則,不需寫標點符號,可以多種規則連著寫,按從小到大的排列(ascii值,所以大寫A到小寫z也可以,但一般不這么寫)

(2)元字符

. ? ? 匹配除換行符以外的任意字符

\w ? ?匹配數字字母和下劃線的字符 ? ?大寫代表非數字字母下劃線的字符

\s  匹配空白符 ? ? ? ? ? ? ? ?大寫代表非空白符的字符

\d ? ?匹配數字   大寫代表非數字的字符

^ ? ? ?匹配字符串的開始,寫在開頭 ? ? [ ^ ] ?若寫在字符集當中就代表除字符集中以外所有的字符?

$ ? ? 匹配字符串的結尾,寫在最后

(3)量詞

* ?零次或多次

+ 一次或多次

?零次或一次

{1}只有1次

{2,10}2到10次

{4,}4次或多次

規則:盡量匹配多次;量詞只能操作前一個字符的次數。也就是說不會只對一個字符進行匹配就完了,而是將指定次數的匹配當作一次整體的匹配

(4)貪婪匹配:使用量詞匹配,每次盡量匹配多次

   ?非貪婪匹配:在量詞后加?,就是盡量匹配最少次

(5)分組:小括號;可以把一組字符當作一個整體,匹配這個整體也可以使用量詞使這個整體重復匹配;對于一條匹配的正則,只對需要的內容進行分組

(6)轉義符:\ 對于一些有特殊意義的字符用\可以表示本身,在python中用r轉義

補充:

1、回溯算法:例如<.*?> ?會一直匹配,當遇到>后不會停止會繼續匹配,待匹配到最后還是沒有>就會回頭回到之前的>

2、.*?字符 ? 取前面任意長度的字符,直到字符出現

二、re模塊

1、和正則的關系:python中的re模塊就是為正則服務的

2、方法

(1)findall(正則,要匹配的字符串) ?輸出的列表類型,元素為每一個匹配的字符串;若沒有匹配上,就輸出空列表

(2)search(正則,要匹配的字符串) 輸出的是一種對象并不顯示匹配的字符串,通常用group()來顯示匹配上的字符串

例如:

import re

ret = ?search(正則,字符串)

if ? ret ? : ? ? 若沒有匹配上,則輸出None

  print(ret.group() ) ? 注意這里group只能顯示第一個匹配上的字符串,若本身字符串很長有多個匹配項,但是group也只能顯示出第一個

(3)match() ?用法和search一樣,但是,不同的是match會自動在正則前面加上^,代表以什么開頭,所以group輸出的值只能是字符串開始匹配上的字符

?

(4)分割 split(正則[ab],字符串)按照正則的規則依次分割,例如先匹配a后分割得到的結果再按b分割,最后輸出的是列表

(5)替換 sub(正則,要替換的內容,字符串,次數) 按照正則匹配上的內容換成 ? 要替換的內容 ? 再輸出替換好的字符串。次數是指替換幾次,也就是替換前幾個

(6)sunb()會直接顯示輸出替換的次數

?

(7)obj = ?re.compile (正則) ? 將正則表達式編譯為正則表達式對象,這樣可以用來對多個字符串進行相同正則的匹配

(8)finditer(正則,字符串) ?會直接輸出一個迭代器,可循環取值,取值時要用group()

三、進階知識

1、findall優先級查詢:會優先顯示分組即小括號里的匹配內容,而自動不顯示括號外的匹配內容

解決辦法:(?:......... ? ? ?) ? 只要在小括號里的開頭加上問號和冒號,注意一定不要分開

2、split 優先級查詢:若在正則表達式兩邊加了括號,則分割時還會顯示出原本要匹配的內容,例如上一節中的(4)給[ab]加括號([ab]),這樣的話分割出來的內容也會有a和b

3、匹配標簽:在search方法中,在要選擇輸出的正則規則前面加上?P<名字>,然后把正則規則用小括號括起來

import re ret=re.search('<\w+>(?P<name>\w+)<\w+>','<h1>hello<h1>') print(ret.group('name')) 匹配標簽

?若遇到字符串有重復的內容使我們需要的,不能每一次都寫一個新的名字,只要在需要的正則位置兩邊加上括號,開頭寫?P=名字,而且括號里的正則也不需要留著

import re ret=re.search('<(?P<name>\w+)>\w+<(?P=name)>','<h1>hello<h1>') print(ret.group('name')) 匹配標簽2

?

轉載于:https://www.cnblogs.com/wanghl1011/articles/7505429.html

總結

以上是生活随笔為你收集整理的9月11日学习内容整理:正则表达式,re模块的全部內容,希望文章能夠幫你解決所遇到的問題。

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