最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python正則表達(dá)式?r'(.*)?are?(.*?)?.*'的深入理解

 更新時(shí)間:2022年07月06日 14:41:08   作者:linng12  
日常的開(kāi)發(fā)工作中經(jīng)常會(huì)有處理字符串的需求,簡(jiǎn)單的字符串處理,我們使用python內(nèi)置的字符串處理函數(shù)就可以了,但是復(fù)雜的字符串匹配就需要借助正則表達(dá)式了,這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式?r‘(.*)?are?(.*?)?.*‘的相關(guān)資料,需要的朋友可以參考下

在學(xué)習(xí)Python3的正則表達(dá)式的時(shí)候遇到一個(gè)例子

#!/usr/bin/python3
import re
 
line = "Cats are smarter than dogs"
# .* 表示任意匹配除換行符(\n、\r)之外的任何單個(gè)或多個(gè)字符
# (.*?) 表示"非貪婪"模式,只保存第一個(gè)匹配到的子串
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")

運(yùn)行結(jié)果為

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

這個(gè)例子主要的理解為r‘(.*) are (.*?) .*’,以下為我查詢(xún)資料之后所得到的個(gè)人理解以及試驗(yàn)

  1. 前面的r比較好理解,表示字符串為非轉(zhuǎn)義的原始字符串,讓編譯器忽略反斜杠,也就是忽略轉(zhuǎn)義字符。但是這個(gè)例子中字符串里沒(méi)有反斜杠,所以這個(gè)r可有可無(wú)。
  2. (.*) 第一個(gè)匹配分組,.*代表匹配除換行符之外的所有字符
  3. (.*?)第二個(gè)匹配分組,.*?后面多個(gè)問(wèn)號(hào),代表非貪婪模式,也就是說(shuō)只匹配符合條件的最少字符
  4. 后面的一個(gè).*  沒(méi)有括號(hào)包圍,所以不是分組,匹配效果和第一個(gè)一樣,但是不計(jì)入匹配結(jié)果中。

綜上所屬以一種通俗易懂的描述就是將字符串以are為中斷分為幾部分,(.*)因?yàn)槭秦澙返模苑祷氐氖撬袧M(mǎn)足條件的內(nèi)容太,(.*?)為非貪婪模式,所以返回第一個(gè)滿(mǎn)足要求的內(nèi)容或沒(méi)有

匹配成功,這句話(huà)如果不好理解就看看下面這個(gè)例子

  #!/usr/bin/python3
  
  import re
   
  #line = "Cats are smarter than dogs"
  line = "a a Cats are Cats are smarter than dogs"
  # .* 表示任意匹配除換行符(\n、\r)之外的任何單個(gè)或多個(gè)字符
  # (.*?) 表示"非貪婪"模式,只保存第一個(gè)匹配到的子串
  matchObj = re.match( r'(.*) are (.*) .*', line, re.M|re.I)
   
  if matchObj:
      print ("matchObj.group() : ", matchObj.group())
      print ("matchObj.group(1) : ", matchObj.group(1))
      print ("matchObj.group(2) : ", matchObj.group(2))
  else:                                                                      
      print ("No match!!")

輸出結(jié)果:

matchObj.group() :  a a Cats are Cats are smarter than dogs
matchObj.group(1) :  a a Cats are Cats
matchObj.group(2) :  smarter than

這個(gè)例子主要是將第一個(gè)例子中的line字符串進(jìn)行了觀察輸出結(jié)果

group(1)對(duì)應(yīng)第一個(gè)括號(hào)的條件,我理解為最后滿(mǎn)足are分段的前面的所有內(nèi)容,如果將第一個(gè)括號(hào)改為(.*?)就是第一個(gè)are的前面內(nèi)容,經(jīng)過(guò)驗(yàn)證確實(shí)是這樣的,這里就不貼程序了可以自行驗(yàn)證

以下示例為更好的解釋第二個(gè)括號(hào)的內(nèi)容以及無(wú)括號(hào)的.*

 #!/usr/bin/python3
  
  import re
   
  #line = "Cats are smarter than dogs"
  line = "a a Cats are Cats are smarter than dogs"
  # .* 表示任意匹配除換行符(\n、\r)之外的任何單個(gè)或多個(gè)字符
  # (.*?) 表示"非貪婪"模式,只保存第一個(gè)匹配到的子串
  matchObj = re.match( r'(.*?) are (.*) .* .*', line, re.M|re.I)             
   
  if matchObj:
      print ("matchObj.group() : ", matchObj.group())
      print ("matchObj.group(1) : ", matchObj.group(1))
      print ("matchObj.group(2) : ", matchObj.group(2))
  else:
      print ("No match!!")

matchObj.group() :  a a Cats are Cats are smarter than dogs
matchObj.group(1) :  a a Cats
matchObj.group(2) :  Cats are smarter

group(2)對(duì)應(yīng)第二個(gè)括號(hào)的條件:因?yàn)槲覍⑦@里第一個(gè)括號(hào)的內(nèi)容添加了?所以第一個(gè)括號(hào)索引的內(nèi)容就是第一個(gè)are前面的內(nèi)容,第二個(gè)括號(hào)就在當(dāng)前這個(gè)are之后開(kāi)始索引,在這里我沒(méi)有加不加? 所以輸出為輸出后面出去.*條件的所有內(nèi)容

.*因?yàn)闆](méi)有()所以不能使用group訪(fǎng)問(wèn),但是會(huì)實(shí)際占用位置,上面例子最后使用了兩個(gè).* 所以最后占用兩個(gè)單詞,那么前面的內(nèi)容就是group(2)的輸出內(nèi)容了

可以自己嘗試一個(gè)多加幾個(gè) are在語(yǔ)句中 然后判斷語(yǔ)句修改有無(wú)?或者括號(hào)進(jìn)行觀察效果

  #!/usr/bin/python3
  
  import re
  
  #line = "Cats are smarter than dogs"
  line = "a a Cats are CatsB are smarter are than are dogs are dogs b c d e"
  # .* 表示任意匹配除換行符(\n、\r)之外的任何單個(gè)或多個(gè)字符
  # (.*?) 表示"非貪婪"模式,只保存第一個(gè)匹配到的子串
  matchObj = re.match( r'(.*?) are (.*?) (.*?) (.*) .*', line, re.M|re.I)    
   
  if matchObj:
      print ("matchObj.group() : ", matchObj.group())
      print ("matchObj.group(1) : ", matchObj.group(1))
      print ("matchObj.group(2) : ", matchObj.group(2))
      print ("matchObj.group(3) : ", matchObj.group(3))
      print ("matchObj.group(4) : ", matchObj.group(4))
  else:
      print ("No match!!")

matchObj.group() :  a a Cats are CatsB are smarter are than are dogs are dogs b c d e
matchObj.group(1) :  a a Cats
matchObj.group(2) :  CatsB
matchObj.group(3) :  are
matchObj.group(4) :  smarter are than are dogs are dogs b c d

總結(jié)

到此這篇關(guān)于Python正則表達(dá)式 r‘(.*) are (.*?) .*‘的深入理解的文章就介紹到這了,更多相關(guān)Python正則表達(dá)式 r‘(.*) are (.*?) .*‘內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • YOLOv5改進(jìn)系列之增加小目標(biāo)檢測(cè)層

    YOLOv5改進(jìn)系列之增加小目標(biāo)檢測(cè)層

    yolov5出來(lái)已經(jīng)很長(zhǎng)時(shí)間了,所以有關(guān)yolov5的一些詳細(xì)介紹在這里就不一一介紹了,下面這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)系列之增加小目標(biāo)檢測(cè)層的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python爬蟲(chóng)Scrapy框架IP代理的配置與調(diào)試

    Python爬蟲(chóng)Scrapy框架IP代理的配置與調(diào)試

    在調(diào)試爬蟲(chóng)的時(shí)候,新手都會(huì)遇到關(guān)于ip的錯(cuò)誤,本文就來(lái)介紹一下Python爬蟲(chóng)Scrapy框架IP代理的配置與調(diào)試,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • 簡(jiǎn)單了解如何封裝自己的Python包

    簡(jiǎn)單了解如何封裝自己的Python包

    這篇文章主要介紹了簡(jiǎn)單了解如何封裝自己的Python包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python中super()函數(shù)簡(jiǎn)介及用法分享

    Python中super()函數(shù)簡(jiǎn)介及用法分享

    本文給大家分享的是Python中的super函數(shù)的簡(jiǎn)單介紹以及用法和注意事項(xiàng),有需要的小伙伴可以參考下
    2016-07-07
  • Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作

    Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作

    這篇文章主要來(lái)教大家利用Python編程來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)易的音樂(lè)播放器,文中含有基本功能的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python箱型圖繪制與特征值獲取過(guò)程解析

    Python箱型圖繪制與特征值獲取過(guò)程解析

    這篇文章主要介紹了Python箱型圖繪制與特征值獲取過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解Python爬取并下載《電影天堂》3千多部電影

    詳解Python爬取并下載《電影天堂》3千多部電影

    這篇文章主要介紹了Python爬取并下載《電影天堂》3千多部電影,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python批量修改文件名的示例

    python批量修改文件名的示例

    這篇文章主要介紹了python批量修改文件名的示例,幫助大家更好的使用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • Python ConfigParser模塊的使用示例

    Python ConfigParser模塊的使用示例

    這篇文章主要介紹了Python ConfigParser模塊的使用示例,幫助大家更好的理解和學(xué)習(xí)Python ConfigParser模塊的用法,感興趣的朋友可以了解下
    2020-10-10
  • Python讀取HTML中的canvas并且以圖片形式存入Word文檔

    Python讀取HTML中的canvas并且以圖片形式存入Word文檔

    這篇文章主要介紹了Python讀取HTML中的canvas并且以圖片形式存入Word文檔,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08

最新評(píng)論

富平县| 收藏| 宁海县| 共和县| 塔河县| 岱山县| 虎林市| 杭锦旗| 大名县| 蒲城县| 高台县| 邯郸县| 阿图什市| 志丹县| 桂林市| 临湘市| 上林县| 浦江县| 天镇县| 北海市| 常州市| 建水县| 蕉岭县| 毕节市| 兴城市| 达州市| 大同县| 湘潭县| 关岭| 贵南县| 新余市| 保山市| 临海市| 饶平县| 奉新县| 循化| 梧州市| 岫岩| 弥勒县| 汽车| 塔河县|