<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python正則表達式(小結)

      1. 什么是正則表達式?

      正則表達式(regular expression,有時簡寫為RegEx 或 regex)就是用一組由字母和符號組成的“表達式”來描述一個特征,然后去驗證另一個“字符串”是否符合/匹配這個特征。

      2.應用場景?

      (1)驗證字符串是否符合指定特征,比如驗證郵件地址是否符合特定要求等;

      (2)用來查找字符串,從一個長的文本中查找符合指定特征的字符串;

      (3)用來替換,比普通的替換更強大。

      3.相應的模塊--re

      re模塊是Python用來處理正則表達的模塊,是Python處理文本的標準庫。所謂的Python標準庫,就是內置模塊,不需要額外下載,使用時直接引入即可。

       4.常用函數

      類別 函數 用途 表達式 remark
      查找一個匹配項 re.search() 查找任意位置的匹配項. re.search(pattern,string,flags)

      search函數是在字符串中任意位置匹配,只要有符合正則表達式的字符串就匹配成功,即使有兩個匹配項,search函數也只返回一個。

      pattern: 正則表達式的字符串或原生字符串表示;string待匹配字符串;flags:正則表達式使用時的控制標記。

      返回Match對象。

      re.match() 必須從字符串開頭匹配. re.match(pattern,string,flags)

      match函數是要從頭開始匹配,如果開頭不一樣,一定無法匹配。

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

      pattern: 正則表達式的字符串或原生字符串表示;string待匹配字符串;flags:正則表達式使用時的控制標記。

      返回Match對象。

      re.fullmatch() 整個字符串與正則完全匹配.

      re.fullmatch(pattern,string,flags)

      fullmatch函數需要完全相同,匹配整個字符串,返回Match對象。不匹配時,返回None。

      返回Match對象。

      查找多個匹配項 re.findall() 從字符串任意位置查找,返回一個列表.

       re.findall(pattern,string,flags)

      搜索字符串,以列表形式返回全部能匹配的子串。

      返回列表類型。

      兩個方法基本類似,只不過一個是返回列表,一個是返回迭代器。列表是一次性生成在內存中,而迭代器是需要使用時一點一點生成出來的,內存使用更優。
      re.finditer() 從字符串任意位置查找,返回一個迭代器.

       re.finditer(pattern,string,flags)

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

      分割 re.re.split() 支持正則分割 re.split(pattern, string, maxsplit=0, flags=0) 

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

      用 pattern 分開 string , maxsplit表示最多進行分割次數, flags表示模式。

      返回列表類型。

      替換 re.sub() 支持正則替換 re.sub(pattern, repl, string, count=0, flags=0)

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

      repl替換掉string中被pattern匹配的字符, count表示最大替換次數,flags表示正則表達式的常量。

      re.subn() 支持正則替換 re.subn(pattern, repl, string, count=0, flags=0)  函數與 re.sub函數 功能一致,只不過返回一個元組 (字符串, 替換次數)。
      編譯正則對象 re.compile()  編譯正則表達式  返回Pattern對象。

      將正則表達式的樣式編譯為一個 正則表達式對象 (正則對象Pattern),這個對象與re模塊有同樣的正則函數。template()增加了re.TEMPLATE 模式。

      re.template()    
      其他 re.escape()   re.escape(pattern) re.escape(pattern) 可以轉義正則表達式中具有特殊含義的字符,比如:.或者 *。使用是,應小心轉義符的問題。
      re.purge() 清除正則表達式緩存    

      注意:查找一個匹配項(search、match、fullmatch)的函數返回值都是一個 匹配對象Match ,必須需要通過match.group() 獲取匹配值。

      5.什么是Match對象?有什么屬性和方法?

      在上面4的說明中,我們提到search、match、fullmatch函數的返回值是一個Match對象,這個對象中包含了很多匹配的信息。

      類別 名稱 解釋
      對象屬性 string 待匹配的文本。
      re 匹配時使用的Pattern對象(正則表達式)
      pos 正則表達式搜索文本的開始位置。
      endpos 正則表達式搜索文本的結束位置。
      對象方法 start() 匹配字符串在原始字符串的開始位置。
      end() 匹配字符串在原始字符串的結束位置。
      span() 匹配區域,返回(start(),end())。
      group() 獲得匹配后的字符串。
      groups() 獲取每部分匹配的字符串,元組類型。

      注意group()和groups()的區別,一個是返回匹配的字符串,一個是返回各部分匹配內容組成的元組。

      6.表達式中的控制標記flags

      flags:正則表達式使用時的控制標記

      常用標記 標記功能說明

      re.I(re.IGNORECASE)

       re.I是正則表達式中的一個flag,用于忽略大小寫。當我們想要匹配的字符串中包含大小寫不敏感的內容時,可以使用這個flag。

      例如,我們想要匹配字符串中的"apple",不論是大寫還是小寫,都可以使用re.I來實現。

      re.M(re.MULTILINE)

       re.M是正則表達式中的另一個flag,用于多行匹配。通常情況下,正則表達式默認只匹配字符串中的一行內容,但是當我們需要匹配多行內容時,就可以使用re.M。

      例如,我們想要匹配字符串中的以數字開頭的所有行,就可以使用re.M。

      re.S(re.DOTALL)  re.S是正則表達式中的一個flag,用于匹配任意字符,包括換行符。如不設置re.DOTALL這個Flag標識位,符號“.”匹配除換行符外的一切。而一旦設置了這個標識位,符號“.”將啥都匹配。
      re.X(re.VERBOSE)

      忽略空白,提高可讀性。當該標志被指定時,在 RE 字符串中的空白符被忽略,除非該空白符在字符類中或在反斜杠之后。它也可以允許你將注釋寫入 RE,這些注釋會被引擎忽略;注釋用 “#”號 來標識,不過該符號不能在字符串或反斜杠之后。

      7.在表達式中強調開始\結束位置的特殊字符

      表達式用到的特殊字符 說明 舉例
      ^ 與字符串開始的地方匹配,此字符不匹配任何字符. 表達式 "^aaa" 在匹配 "xxxaaaxxx" 時,匹配失敗。只有當 "aaa" 位于字符串的開頭的時候,"^aaa" 才能匹配,如:"aaaxxxxxx"。
      $ 與字符串結束的地方匹配,此字符不匹配任何字符. 達式 "aaa$"在匹配 "xxxaaaxxx" 時,匹配失敗。只有當"aaa"位于字符串的結尾的時候,"aaa$"才能匹配,比如:"xxxxxxaaa"。

      8.表達式中的轉義符(\) 

      一些不便書寫的字符和特殊用處的標點符號,采用在前面加“\” (轉義符).

      表達式 可匹配 表達式 可匹配
      \n 匹配換行符 \? 匹配?符號本身
      \t 匹配制表符 \* 匹配*符號本身
      \\ 匹配\符號本身 \+ 匹配+符號本身
      \^ 匹配^符號本身 \{、\} 匹配大括號
      \$ 匹配$符號本身 \[、\] 匹配中括號
      \. 匹配.符號本身 \(、\) 匹配小括號

      9.能夠與 '多種字符' 匹配的表達式

       正則表達式中的一些表示方法,可以匹配 ‘多種字符’ 中的任意一個字符。例如,表達式"\d" 可以匹配任意一個數字。雖然可以匹配其中任意字符,但是只能是一個,不是多個。

      表達式 匹配功能
      \d 任意一個數字,0~9中的任意一個
      \w 任意一個字母或數字或下劃線,也就是A~Z,a-z,0-9,_中任意一個
      \s 包括空格\制表符\換頁符等空白符的其中的任意一個
      . 小數點可以匹配除了換行符(\n)以外的任意一個字符

      10.表達匹配次數

      表達式 匹配功能 例子
      {n} 表達式重復n次 例如:"\w{2}"相當于"\w\w";"a{5}"相當于"aaaaa"
      {m,n} 表達式至少重復m次,最多重復n次 例如:"ba{1,3}" 可以匹配"ba"或"baa"或"baaa"
      {m,} 表達式至少重復m次 例如:"\w\d{2,}"可以匹配"a12","_456","M12344"
      ? 匹配表達式0次或1次,相當于{0,1} 例如:"a[cd]?"可以匹配"a","ac","ad"
      + 表達式至少出現1次,相當于{1,} 例如:"a+b" 可以匹配"ab","aab","aaab"
      * 表達式不出現或出現任意次數,相當于{0,} 例如:"\^*b"可以匹配"b","^^^b"

      11.借助[]和^自定義匹配關系

      使用方括號 [ ] 包含一系列字符,能匹配其中任意一個字符。用 [^ ] 包含一系列字符,則能匹配其中字符之外的任意一個字符。

      表達式案例 匹配功能
      [abc5@] 匹配"a"或"b"或"5"或"@"
      [^abc] 匹配"a","b","c"之外的任意一個字符
      [f-k] 匹配"f"~"k"之間的任意一個字符
      [^A-F0-3] 匹配"A"~"F","0"~"3"之外的任意一個字符。

      注意:雖然可以匹配其中任意一個,但是只能是一個,不是多個。 

       12.字符串中關于IP的正則表達式

          ##字符串中關于IP地址的正則表達式
          ## ^:匹配字符串的開頭。((25[0-5]|2[0-4]\d|[01]?\d\d?)\.):匹配一個數字和一個點號,這個數字的取值范圍是0到255。
          ## {3}:匹配前面的表達式三次。(25[0-5]|2[0-4]\d|[01]?\d\d?):   配一個數字,這個數字的取值范圍是0到255。$:匹配字符串的結尾。
          ## 使用正則表達式匹配IP地址
          # 字符串是IP地址
          ip_pattern = r'^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$'
          ##字符串是IP地址開頭的
          ipstart_pattern = r'^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)'
          ##字符串包含IP
          ipcontain_pattern = r'((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)'   
          ##字符串包含IP,并且IP地址是以': ['字符開頭,以']'字符結尾
          ipcontain_pattern_plus = r'(\: \[)((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\])' 

      13 舉例

      (1)匹配出文本中 "錯誤原因:" 后面的字符

      pattern = r'錯誤原因:(.+)'
      result1 = re.search(pattern, text1)
      
      想要的內容就是result1.group(1)

      (2)匹配出 錯誤碼

      import re
      def test_error_code_extraction():
          text2 = "錯誤碼:12345,錯誤提供者:test,錯誤原因:testErrorCode:1"
          regex = r"(?<=錯誤碼:)\d+"
          print(re.search(regex, text2).group())
      
      test_error_code_extraction()

      14. AI 正在表達式生成器

      https://www.agilebuilder.net/tools/app/regexp

      【此網址如果,打不開,可以換個瀏覽器試下】

      可以在線生成正則表達式,并且有【解析】、【用法】、【單元測試】等內容

       

       例如

       

      參考網址

      https://zhuanlan.zhihu.com/p/479731754

      https://zhuanlan.zhihu.com/p/127807805

      https://www.bilibili.com/read/cv25901174/?jump_opus=1

      https://www.bilibili.com/video/BV1TJ411Y7JX?p=156

      posted @ 2023-12-02 09:28  東山絮柳仔  閱讀(988)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产一区二区三区亚瑟 | 妺妺窝人体色WWW看人体| 少妇愉情理伦片高潮日本| 四虎国产精品免费久久| 日韩人妻久久精品一区二区| 国产视频深夜在线观看| 久久精品国产99久久无毒不卡| 景德镇市| 中文字幕制服国产精品| 国产精品疯狂输出jk草莓视频 | 一本精品99久久精品77| 免费人成网上在线观看网址| 亚洲国产精品综合久久20| 亚洲伊人久久大香线蕉| 自拍偷拍另类三级三色四色| 伊人色综合一区二区三区影院视频 | 日本高清在线观看WWW色| 毛葺葺老太做受视频| 亚洲综合精品第一页| 狠狠躁天天躁中文字幕无码| 色婷婷综合久久久久中文字幕| av小次郎网站| 欧产日产国产精品精品| 亚洲国产精品成人无码区| 99久久精品费精品国产| 日本一区二区精品色超碰| 三级4级全黄60分钟| 不卡高清AV手机在线观看| 国产精品久久久一区二区| 人妻精品久久无码区| 国产在线一区二区在线视频| 香蕉eeww99国产在线观看| 日韩精品区一区二区三vr| 日韩人妻一区中文字幕| 国产精品自在线拍国产手机版| 99久久久无码国产精品免费 | 色婷婷久久综合中文久久一本 | 日韩中文字幕免费在线观看| 欧美牲交a欧美牲交aⅴ免费真| 国产精品av中文字幕| 亚洲a∨无码一区二区三区|