正則表達式+Python re模塊詳解_正則表達式

來源:腳本之家  責任編輯:小易  

正則表達式中的re.M表示將字符串視為多行,從而^匹配每一行的行首,$匹配每一行的行尾我給你個Python語言的例子,你看看吧這個程序是匹配冒號加一個空格后的數字串,中間有換行符\\n所以用多行匹配re.M12345678910111213141516#!usr/bin/python3 import re line="IF_MIB:=Counter32:12345\\nIF_MIB:=Counter32:1234556;result=re.findall(r'?\\d+$',line,re.M)if result:print(result)else:print("Nothing found!運行結果['12345','1234556']www.13333515.buzz防采集請勿采集本網。

 正則表達式(Regluar Expressions)又稱規則表達式,在代碼中常簡寫為REs,regexes或regexp(regex patterns)。它本質上是一個小巧的、高度專用的編程語言。 通過正則表達式可以對指定的文本實現

因為\"a*\"可以配匹空串,

匹配測試、內容查找、內容替換、字符串分割 等功能。

>>>import re p=re.compile(r'\\d+') p.findall('vid:122313') ['122313'] 如果這個字符串里面只有這么多,這樣寫就行了。

re模塊介紹

正則表達式一個比較常見的用途是找到所有模式匹配的字符串并用不同的字符串來替換它們。sub方法提供一個替換值,可以是字符串或函數,和一個要被處理的字符串。1、這里的sub方法,是被編譯成

Python中的re模塊提供了一個正則表達式引擎接口,它允許我們將正則表達式編譯成模式對象,然后通過這些模式對象執行模式匹配搜索和字符串分割、子串替換等操作。re模塊為這些操作分別提供了模塊級別的函數以及相關類的封裝。

正則表達式一些小規則

\\\\\\代表字符反斜杠(正則表達式需要雙反斜杠來轉義,因為\\在正則表達式中本身就具有含義) line='haha \\\\\\\\ \\\\ hehe' matches=re.findall('([^\\s\\\\\\]+)',line) print matches#['haha','hehe'] 望采納!

    ①元字符

你這個\\\\\\n等同于\\n,\\n是換行符的意思,\\后面如果不是什么t,r,n之類的,表示他的\\后面的那個東西是沒有意義的 \\\\,第一個反斜杠表示轉義,意思是第二反斜杠不再視為一個轉義字符。在python看來\\\\

  ②量詞

③貪婪和非貪婪匹配

    總是在量詞范圍內盡量多匹配 - 貪婪

    總是在量詞范圍內盡量少匹配 - 惰性

    .*?x 匹配任意內容任意次數 遇到x就停止

    .+?x 匹配任意內容至少1次 遇到x就停止

    ④轉義符問題

    . 有特殊的意義,取消特殊的意義\

    取消一個元字符的特殊意義有兩種方法

    在這個元字符前面加 \

     對一部分字符生效,把這個元字符放在字符組里

    [.()+?*]

Python --> re模塊

findall

        會優先顯示分組內的內容

        *****取消優先顯示(?:正則)

search

        只能返回第一個符合條件的項

        得到的結果需要.group取值

        默認獲取完整的匹配結果

        通過group(n)取第n個分組中的內容

# search 還是按照完整的正則進行匹配,顯示也顯示匹配到的第一個內容,但是我們可以通過給group方法傳參數# 來獲取具體文組中的內容ret = re.search('9(\d)(\d)','19740ash93010uru')print(ret) # 變量 -- > <re.Match object; span=(1, 4), match='974'>if ret: print(ret.group()) # --> 974 print(ret.group(1)) # --> 7 print(ret.group(2)) # --> 4# findall # 取所有符合條件的,優先顯示分組中的# search 只取第一個符合條件的,沒有優先顯示這件事兒 # 得到的結果是一個變量 # 變量.group() 的結果 完全和 變量.group(0)的結果一致 # 變量.group(n) 的形式來指定獲取第n個分組中匹配到的內容# 加上括號 是為了對真正需要的內容進行提取ret = re.findall('<\w+>(\w+)</\w+>','<h1>askh930s02391j192agsj</h1>')print(ret) # --> ['askh930s02391j192agsj']

    其他的內容在代碼中有詳細的注釋,大家可以復制我的代碼一步一步運行然后實驗

    以下的內容有:split sub subn math,compile,finditer

# split sub subn math,compile,finditer# splitres = re.split('\d+', "cyx123456cyxx")print(res) # --> ['cyx', 'cyxx']res = re.split('(\d+)', "cyx123456cyxx") # 保留分組print(res) # --> ['cyx', '123456', 'cyxx']# sub 替換res = re.sub('\d+', '我把數字替換了', "cyx123456cyxxx123456") # 默認全部替換,當然也可以替換一次re.sub('\d+','我把數字替換了',"cyx123456cyxxx123456",1)print(res) # --> cyx我把數字替換了cyxxx我把數字替換了# subn 替換了并顯示替換的次數res = re.subn('\d+', '我把數字替換了', "cyx123456cyxxx123456")print(res) # --> ('cyx我把數字替換了cyxxx我把數字替換了', 2)# match 這個就相當與加了個^ (和search差不多) --> 主要用來規定這個字符號必須是什么樣的res = re.match('\d+', 'cyx123456cyxxx')print(res) # --> Noneres = re.match('\d+', '123cyx456cyxxx')print(res.group()) # --> 123# compile -- 節省代碼的時間的工具# 假如同一個正則表達式要被使用多次# 節省了多次解析同一個正則表達式的時間ret = re.compile("\d+")res = ret.search("cyx12456cyxXX123")print(res.group()) # --> 12456# finditer --> 節省空間ret = re.finditer("\d+", "cyx123456cyxxx125644")for r in ret: print(r.group()) # --> 123456 # 125644# 怎么又節省時間又節省空間呢?ret = re.compile('\d+')res = ret.finditer("cyx222231fddsf45746sdf2123sdf56456sdf10123sdf123132sdf")for r in res: print(r.group())"""2222314574621235645610123123132"""# 分組命名(?P<組名>正則) (?P=組名)# 有的時候我們要匹配的內容是包含在不想要的內容之中的,# 只能先把不想要的內容匹配出來,然后再想辦法從結果中去掉# 分組命名的用法 (找兩個組里面是一樣的內容)exp = '<abc>asdasf54545645698asdasd</abc>00545sdfsdf</abd>'ret = re.search('<(?P<tag>\w+)>.*?</(?P=tag)', exp)print(ret) # -- > <re.Match object; span=(0, 33), match='<abc>asdasf54545645698asdasd</abc'># exp2:import reret = re.search('\d(\d)\d(\w+?)(\d)(\w)\d(\d)\d(?P<name1>\w+?)(\d)(\w)\d(\d)\d(?P<name2>\w+?)(\d)(\w)', '123abc45678agsf_123abc45678agsf123abc45678agsf')print(ret.group('name1')) # -- > agsf_123abcprint(ret.group('name2')) # -- > agsf

今日小思考

    當我們有一個這樣的列表:

lis = ['', 'z', 'c', 'asd', 'sdf', '', 'asd']

    那么我們如何將里面的空字符刪除呢?

ret = filter(lambda n: n, lis)print(list(ret)) # --> ['z', 'c', 'asd', 'sdf', 'asd']

總結

到此這篇關于正則表達式+Python re模塊詳解的文章就介紹到這了,更多相關正則表達式 python re模塊內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

>>>s="""#server xx-3:80 weight=1 max_fails=2 fail_timeout=10s backup;server xx:80 weight=1 max_fails=2 fail_timeout=10s;server yy weight=1 max_fails=2 fail_timeout=10s backup;server 192.168.1.1 weight=1 max_fails=2 fail_timeout=10s;server xx:9090 max_fails=2 fail_timeout=10s backup;server 192.168.1.1 weight=1 max_fails=2 fail_timeout=10s;import rere.findall('^[^#\\n]*server[\\t]+([^:\\s]+)',s,re.M)['xx','yy','192.168.1.1','xx','192.168.1.1']內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • python 日志 logging模塊詳細解析
  • python動態導入模塊:__import__、importlib、動態導入的使用場景實例分析
  • 執行python程序時模塊報錯問題
  • 使用python圖形模塊turtle庫繪制櫻花、玫瑰、圣誕樹代碼實例
  • python標準庫json模塊和pickle模塊使用詳解
  • python標準庫os模塊詳解
  • python運行提示缺少模塊問題解決方案
  • 經典javascript正則表達式[優質排版]
  • 用js實現過濾script的正則
  • 常見的正則表達式問題
  • 正則表達式創建方式的區別及編寫簡單的正則方式(js學習總結)
  • 正則表達式如何在php里靈活的應用
  • ios 正則表達式判斷純數字及匹配11位手機號碼的方法
  • 一個正則的寫法 php
  • javascript 表單驗證正則表達式大全[推薦]
  • 通過java正則表達式去掉sql代碼中回車換行和多余空格
  • 正則的幾個基本概念
  • python的re正則表達式怎么寫
  • Python正則表達式中re.M 是什么意思
  • python正則表達式re.findall(r"bw+b", s)中的r是什么意思?
  • python 正則表達式中 re.match 如果在模式后面加上$符號,和re.searc
  • 剛學python的正則表達式 對re.search()有疑問
  • python re 正則表達式 怎么獲取vid:122313, 其中的數字?
  • python 正則表達式re.sub函數替換內容的一個比較基礎的問題
  • 請問這個python正則表達式是什么意思?matches = re.findall('([^s]+)', line)
  • python正則表達式中re.compile('n')匹配的為什么是換行符?
  • boost 正則表達式 有沒有類似 python re庫里面 subn的用法
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁正則表達式python 日志 logging模塊詳細解析python動態導入模塊:__import__、importlib、動態導入的使用場景實例分析執行python程序時模塊報錯問題使用python圖形模塊turtle庫繪制櫻花、玫瑰、圣誕樹代碼實例python標準庫json模塊和pickle模塊使用詳解python標準庫os模塊詳解python運行提示缺少模塊問題解決方案經典javascript正則表達式[優質排版]用js實現過濾script的正則常見的正則表達式問題正則表達式創建方式的區別及編寫簡單的正則方式(js學習總結)正則表達式如何在php里靈活的應用ios 正則表達式判斷純數字及匹配11位手機號碼的方法一個正則的寫法 phpjavascript 表單驗證正則表達式大全[推薦]通過java正則表達式去掉sql代碼中回車換行和多余空格正則的幾個基本概念java 正則表達式詳解比較正宗的驗證郵箱的正則表達式正則表達式匹配任意字符(包括換最新手機號碼、電話號碼正則表達javascript 手機號碼正則表達式驗js利用正則配合replace替換指定字正則表達式匹配不包含某些字符串正則中需要轉義的特殊字符小結js正則函數match、exec、test、s最全的常用正則表達式大全——包使用正則表達式 exec 獲取字符串中的漢字正則表達式實現與或非關系【推薦】mysql正則表達式 like 通配符淺析正則表達式利用正則表達式將字符串分組示例代碼正則表達式匹配不包含某些字符串的技巧常用正則表達式 整理篇js取得參數代碼正則表達式\d元字符(相對于數字0-9)正則表達式中環視的簡單應用示例【基于ja
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果