亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2020年03月24日 10:06:09   作者:YxinMiracle  
正則表達式(Regluar Expressions)又稱規(guī)則表達式,在代碼中常簡寫為REs,regexes或regexp(regex patterns)。這篇文章主要介紹了正則表達式+Python re模塊詳解,需要的朋友可以參考下

 正則表達式(Regluar Expressions)又稱規(guī)則表達式,在代碼中常簡寫為REs,regexes或regexp(regex patterns)。它本質(zhì)上是一個小巧的、高度專用的編程語言。 通過正則表達式可以對指定的文本實現(xiàn)
匹配測試、內(nèi)容查找、內(nèi)容替換、字符串分割 等功能。

re模塊介紹

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

正則表達式一些小規(guī)則

    ①元字符

  ②量詞

③貪婪和非貪婪匹配

    總是在量詞范圍內(nèi)盡量多匹配 - 貪婪
    總是在量詞范圍內(nèi)盡量少匹配 - 惰性
    .*?x 匹配任意內(nèi)容任意次數(shù) 遇到x就停止
    .+?x 匹配任意內(nèi)容至少1次 遇到x就停止

    ④轉(zhuǎn)義符問題

    . 有特殊的意義,取消特殊的意義\
    取消一個元字符的特殊意義有兩種方法
    在這個元字符前面加 \
     對一部分字符生效,把這個元字符放在字符組里
    [.()+?*]

Python --> re模塊

findall
        會優(yōu)先顯示分組內(nèi)的內(nèi)容
        *****取消優(yōu)先顯示(?:正則)
search
        只能返回第一個符合條件的項
        得到的結果需要.group取值
        默認獲取完整的匹配結果
        通過group(n)取第n個分組中的內(nèi)容

# search 還是按照完整的正則進行匹配,顯示也顯示匹配到的第一個內(nèi)容,但是我們可以通過給group方法傳參數(shù)
# 來獲取具體文組中的內(nèi)容
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
  # 取所有符合條件的,優(yōu)先顯示分組中的
# search 只取第一個符合條件的,沒有優(yōu)先顯示這件事兒
  # 得到的結果是一個變量
    # 變量.group() 的結果 完全和 變量.group(0)的結果一致
    # 變量.group(n) 的形式來指定獲取第n個分組中匹配到的內(nèi)容

# 加上括號 是為了對真正需要的內(nèi)容進行提取
ret = re.findall('<\w+>(\w+)</\w+>','<h1>askh930s02391j192agsj</h1>')
print(ret) # --> ['askh930s02391j192agsj']

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

    以下的內(nèi)容有:split sub subn math,compile,finditer

# split sub subn math,compile,finditer
# split
res = re.split('\d+', "cyx123456cyxx")
print(res) # --> ['cyx', 'cyxx']
res = re.split('(\d+)', "cyx123456cyxx") # 保留分組
print(res) # --> ['cyx', '123456', 'cyxx']
# sub 替換
res = re.sub('\d+', '我把數(shù)字替換了',
       "cyx123456cyxxx123456") # 默認全部替換,當然也可以替換一次re.sub('\d+','我把數(shù)字替換了',"cyx123456cyxxx123456",1)
print(res) # --> cyx我把數(shù)字替換了cyxxx我把數(shù)字替換了
# subn 替換了并顯示替換的次數(shù)
res = re.subn('\d+', '我把數(shù)字替換了', "cyx123456cyxxx123456")
print(res) # --> ('cyx我把數(shù)字替換了cyxxx我把數(shù)字替換了', 2)
# match 這個就相當與加了個^ (和search差不多) --> 主要用來規(guī)定這個字符號必須是什么樣的
res = re.match('\d+', 'cyx123456cyxxx')
print(res) # --> None
res = re.match('\d+', '123cyx456cyxxx')
print(res.group()) # --> 123
# compile -- 節(jié)省代碼的時間的工具
# 假如同一個正則表達式要被使用多次
# 節(jié)省了多次解析同一個正則表達式的時間
ret = re.compile("\d+")
res = ret.search("cyx12456cyxXX123")
print(res.group()) # --> 12456
# finditer --> 節(jié)省空間
ret = re.finditer("\d+", "cyx123456cyxxx125644")
for r in ret:
  print(r.group()) # --> 123456
  # 125644
# 怎么又節(jié)省時間又節(jié)省空間呢?
ret = re.compile('\d+')
res = ret.finditer("cyx222231fddsf45746sdf2123sdf56456sdf10123sdf123132sdf")
for r in res:
  print(r.group())
"""
222231
45746
2123
56456
10123
123132
"""
# 分組命名(?P<組名>正則) (?P=組名)
# 有的時候我們要匹配的內(nèi)容是包含在不想要的內(nèi)容之中的,
# 只能先把不想要的內(nèi)容匹配出來,然后再想辦法從結果中去掉
# 分組命名的用法 (找兩個組里面是一樣的內(nèi)容)
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 re
ret = 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_123abc
print(ret.group('name2')) # -- > agsf

今日小思考

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

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

    那么我們?nèi)绾螌⒗锩娴目兆址麆h除呢?

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

總結

到此這篇關于正則表達式+Python re模塊詳解的文章就介紹到這了,更多相關正則表達式 python re模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • VBscript 的正則表達式 字符串匹配

    VBscript 的正則表達式 字符串匹配

    VBscript 的正則表達式 字符串匹配...
    2007-04-04
  • 正則表達式模式修飾符

    正則表達式模式修飾符

    下面列出了當前可用的正則表達式修飾符。括號中提到的名字是正則表達式內(nèi)部這些修飾符的名稱。 模式修飾符中的空格,換行符會被忽略,其他字符會導致錯誤
    2016-12-12
  • JScript 8.0 正則表達式語法

    JScript 8.0 正則表達式語法

    正則表達式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”)。模式描述在搜索文本時要匹配的一個或多個字符串。
    2008-05-05
  • 利用js正則表達式校驗正數(shù)、負數(shù)、和小數(shù)

    利用js正則表達式校驗正數(shù)、負數(shù)、和小數(shù)

    本文主要介紹了怎樣利用js正則表達式校驗正數(shù)、負數(shù)、和小數(shù)的具體實現(xiàn)代碼,具有一定的參考價值。需要的朋友可以看下
    2016-12-12
  • 學php正則!超基礎簡單例子

    學php正則!超基礎簡單例子

    我一直都覺得正則表達式只要在要用的時候翻一下百度就Ok了,然后今天寫php的時候發(fā)現(xiàn),原來我正則完全一點都不懂。
    2011-09-09
  • 正則表達式實現(xiàn)添加、刪除、替換三種功能

    正則表達式實現(xiàn)添加、刪除、替換三種功能

    本文的一段實例代碼實現(xiàn)了通過用正則表達式來對某一個句子的添加、替換、刪除三種操作,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • 淺談正則表達式回溯陷阱

    淺談正則表達式回溯陷阱

    日常編程經(jīng)常會用到正則表達式,躲不開這個陷阱,本文主要介紹了淺談正則表達式回溯陷阱,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 最新版網(wǎng)址替換正則表達式

    最新版網(wǎng)址替換正則表達式

    這篇文章主要介紹了最新版網(wǎng)址替換正則表達式,本文給出了最新網(wǎng)址正則表達式和示例替換文本,需要的朋友可以參考下
    2015-04-04
  • 匹配中文漢字的正則表達式介紹

    匹配中文漢字的正則表達式介紹

    這篇文章主要介紹了匹配中文漢字的正則表達式介紹,本文同時講解了匹配中文字符的正則和匹配雙字節(jié)字符的正則,需要的朋友可以參考下
    2015-04-04
  • js 正則學習小記之匹配字符串字面量優(yōu)化篇

    js 正則學習小記之匹配字符串字面量優(yōu)化篇

    昨天在《js 正則學習小記之匹配字符串字面量》談到 /"(?:\\.|[^"])*"/ 是個不錯的表達式,因為可以滿足我們的要求,所以這個表達式可用,但不一定是最好的
    2020-04-04

最新評論