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

詳解Python 最短匹配模式

 更新時間:2020年07月29日 17:21:20   作者:David Beazley  
這篇文章主要介紹了如何實現(xiàn)Python 最短匹配模式,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下

問題

你正在試著用正則表達式匹配某個文本模式,但是它找到的是模式的最長可能匹配。 而你想修改它變成查找最短的可能匹配。

解決方案

這個問題一般出現(xiàn)在需要匹配一對分隔符之間的文本的時候(比如引號包含的字符串)。 為了說明清楚,考慮如下的例子:

>>> str_pat = re.compile(r'"(.*)"')
>>> text1 = 'Computer says "no."'
>>> str_pat.findall(text1)
['no.']
>>> text2 = 'Computer says "no." Phone says "yes."'
>>> str_pat.findall(text2)
['no." Phone says "yes.']
>>>

在這個例子中,模式 r'\"(.*)\"' 的意圖是匹配被雙引號包含的文本。 但是在正則表達式中*操作符是貪婪的,因此匹配操作會查找最長的可能匹配。 于是在第二個例子中搜索 text2 的時候返回結(jié)果并不是我們想要的。

為了修正這個問題,可以在模式中的*操作符后面加上?修飾符,就像這樣:

>>> str_pat = re.compile(r'"(.*?)"')
>>> str_pat.findall(text2)
['no.', 'yes.']
>>>

這樣就使得匹配變成非貪婪模式,從而得到最短的匹配,也就是我們想要的結(jié)果。

討論

這一節(jié)展示了在寫包含點(.)字符的正則表達式的時候遇到的一些常見問題。 在一個模式字符串中,點(.)匹配除了換行外的任何字符。 然而,如果你將點(.)號放在開始與結(jié)束符(比如引號)之間的時候,那么匹配操作會查找符合模式的最長可能匹配。 這樣通常會導致很多中間的被開始與結(jié)束符包含的文本被忽略掉,并最終被包含在匹配結(jié)果字符串中返回。 通過在 * 或者 + 這樣的操作符后面添加一個 ? 可以強制匹配算法改成尋找最短的可能匹配。

以上就是詳解Python 最短匹配模式的詳細內(nèi)容,更多關(guān)于Python 最短匹配模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python bottle框架支持jquery ajax的RESTful風格的PUT和DELETE方法

    python bottle框架支持jquery ajax的RESTful風格的PUT和DELETE方法

    下面小編就為大家?guī)硪黄猵ython bottle框架支持jquery ajax的RESTful風格的PUT和DELETE方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Django Web開發(fā)中django-debug-toolbar的配置以及使用

    Django Web開發(fā)中django-debug-toolbar的配置以及使用

    正在發(fā)愁怎么調(diào)試Django,就遇到了Django Debug Toolbar這個利器。下面這篇文章主要給大家介紹了關(guān)于django web開發(fā)中django-debug-toolbar的配置以及使用的相關(guān)資料,文中通過圖文及示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • 深入了解Django View(視圖系統(tǒng))

    深入了解Django View(視圖系統(tǒng))

    這篇文章主要介紹了簡單了解Django View(視圖系統(tǒng)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 在不同系統(tǒng)間遷移Python程序的方法與教程

    在不同系統(tǒng)間遷移Python程序的方法與教程

    本文介紹了幾種將Windows上編寫的Python程序遷移到Linux服務器上的方法,包括使用虛擬環(huán)境和依賴凍結(jié)、容器化技術(shù)(如Docker)、使用Anaconda環(huán)境以及遠程桌面連接和配置(作為臨時方案),通過這些方法,可以有效地解決環(huán)境搭建和依賴安裝問題
    2025-02-02
  • Python functools.lru_cache裝飾器性能提升利器深入探究

    Python functools.lru_cache裝飾器性能提升利器深入探究

    本文將詳細介紹functools.lru_cache裝飾器的原理、用法以及適當?shù)膱鼍?以幫助你更好地利用這一功能,它可以用來緩存函數(shù)的輸出,以避免重復計算,從而顯著提高程序的執(zhí)行速度
    2024-01-01
  • PyTorch中torch.matmul()函數(shù)常見用法總結(jié)

    PyTorch中torch.matmul()函數(shù)常見用法總結(jié)

    torch.matmul()也是一種類似于矩陣相乘操作的tensor連乘操作。但是它可以利用python中的廣播機制,處理一些維度不同的tensor結(jié)構(gòu)進行相乘操作,這篇文章主要介紹了PyTorch中torch.matmul()函數(shù)用法總結(jié),需要的朋友可以參考下
    2023-04-04
  • Python ljust rjust center輸出

    Python ljust rjust center輸出

    Python中打印字符串時可以調(diào)用ljust(左對齊),rjust(右對齊),center(中間對齊)來輸出整齊美觀的字符串,使用起來非常簡單,包括使用第二個參數(shù)填充(默認為空格)。
    2008-09-09
  • Python中的復制、淺拷貝與深拷貝解讀

    Python中的復制、淺拷貝與深拷貝解讀

    這篇文章主要介紹了Python中的復制、淺拷貝與深拷貝解讀,對于可變對象,賦值是最簡單省事的,如b=a,意思是直接使得a指向b代表的對象,兩者id一樣,指向同一個對象,一個修改,另一個也隨之變化,需要的朋友可以參考下
    2023-11-11
  • Python爬蟲之超級鷹驗證碼應用

    Python爬蟲之超級鷹驗證碼應用

    眾所周知python是一個很強大的語言,它擁有眾多的庫,今天我嘗試了使用超級鷹第三方平臺進行驗證碼的開發(fā),需要的朋友可以參考下
    2022-08-08
  • Scrapy中如何向Spider傳入?yún)?shù)的方法實現(xiàn)

    Scrapy中如何向Spider傳入?yún)?shù)的方法實現(xiàn)

    這篇文章主要介紹了Scrapy中如何向Spider傳入?yún)?shù)的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論

乌什县| 东宁县| 昔阳县| 呼伦贝尔市| 阳信县| 锡林郭勒盟| 家居| 铜陵市| 天峻县| 翁牛特旗| 洱源县| 佛教| 灵川县| 林周县| 澄城县| 鄂托克前旗| 美姑县| 措勤县| 嘉定区| 扶余县| 侯马市| 怀仁县| 阳信县| 株洲市| 全州县| 阳江市| 永济市| 股票| 巴林左旗| 苍山县| 镇江市| 寿宁县| 临武县| 南靖县| 榆社县| 共和县| 镇远县| 龙山县| 福清市| 平湖市| 洛扎县|