原创 python拾遺

列表碾平 需求: 將[[1,2],[3,4]]轉換爲[1,2,3,4],具體實現有以下幾種方法: test_list = [[1,2],[3,4]] 1. from itertools import chain list(

原创 ffmpeg入門

一、簡介 FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。 多媒體視頻處理工具FFmpeg有非常強大的功能包括視頻採集、視頻轉換、視頻抓圖、給視頻加水印等。 二、命令&參數 使用方式: ffmpeg

原创 一席觀後感-大滅絕

當前地球物種數量:150w,佔地球歷史上物種數量的1% 地球歷史上有過三次“大滅絕”,物種滅絕率達到90%。滅絕的大都是不會游泳的生物 近一百年地表平均溫度上升1度,照這個趨勢1000年後地表溫度上升10度,可能導致下一次大滅絕

原创 8.3 回溯

比起DFA,NFA看起來足夠“麻煩”:它的狀態是不確定的,這有點像走迷宮,越走岔路口越多,最後不會迷路嗎? 不過,NFA的正則引擎自有辦法:如果有多個可能的狀態,它們會在選擇時記錄下這些狀態備用,然後才選擇其中某個狀態嘗試;如果之後遇到死路

原创 8.4 NFA和DFA

上一節粗略介紹了回溯,它是NFA特有的功能,DFA不需要回溯,也就不需要保存狀態再反覆嘗試。這樣看來,NFA不是更慢嗎?但是當前我們所使用的大多數工具中的正則引擎都選用了NFA,這是爲什麼? NFA確實更慢,但NFA也有自己的優勢:如果正則

原创 8.2 正則表達式的匹配過程

正則表達式所使用的理論模型就是有窮自動機,其具體實現稱爲正則引擎(regex engine)。用正則表達式處理字符串,首先需要生成自動機(“編譯”正則對象);之後無論輸入什麼字符串,正則引擎都只需要老老實實地在狀態之間遊走。 圖8-2顯示了

原创 第八章 匹配原理

8.1 有窮自動機 正則表達式能迅速進行復雜處理的祕密就在於,它採用了一種特殊的理論模型:有窮自動機(finite automata),也叫做有窮狀態自動機(finite-state machine)。這種機器具備有限個狀態,可以根據不同條

原创 8.1 有窮自動機

在固定字符串的處理上,正則表達式的速度是趕不上簡單字符串處理的;如果要進行復雜多變的字符處理,正則表達式的速度則要勝於簡單字符串處理,比如正則表達式a(bb)+a,它能匹配的字符串是abba、abbbba、abbbbbba....,如果用簡

原创 3.3 引用分組

括號不僅僅能把有聯繫的元素歸攏起來並分組,還有其他的作用——使用括號後,正則表達式會保存每個分組真正匹配的文本,等到匹配完成後,通過group(num)之類的方法“引用”分組在匹配時捕獲的內容。其中num表示對應括號的編號,括號分組的編號是

原创 2.2 常用量詞

{m,n}是通用形式的量詞,正則表達式還有三個常用量詞,分別是+、?、*。它們的形態雖然不同於{m,n},功能卻是相同的(也可以把它們理解爲“量詞簡記法”)。 表2-2 常用量詞 常用量詞 等價形式 說明 * {0,} 可能出

原创 3.3.2 各種引用的記法

根據前面的介紹,對分組的引用可能出現在三種場合: 在匹配完之後,用group(num)之類的方法提取數據 在進行正則表達式替換時,用\num引用 在正則表達式內部,用\num引用 但是使用\num,有可能遇到二義性的問題:如果出現了\1

原创 第三章 括號

3.1 分組 括號可以把有聯繫的多個元素歸攏起來,使它們作爲一個整體,可以由量詞來約束。(一起出現或不出現, 或者出現n次) 3.2 多選結構   多選結構的形式是(...|...),在括號內部用豎線|分隔開多個子表達式,這些子表達式也叫做

原创 3.2 多選結構

上一節中用[1-9]\d{14}(\d{2}[\dx])?匹配身份證號,思路是把18位號碼中多出的3位“合併”到匹配15位號碼的表達式中。這裏也可以分情況處理: 情況 表達式 15位身份證 [1-9]\d{14} 18位身

原创 3.1 分組

用字符組和量詞可以匹配引號字符串,也可以匹配html tag,如果需要用正則表達式匹配身份證號碼,依靠字符組和量詞如何實現? 身份證號碼是一個長度爲15或18的字符串,如果是15位,則全部由數字組成,首位不能是0;如果是18位,則前17位全

原创 3.3.4 非捕獲型分組

目前爲止,總共介紹了括號的三種用途: 分組:將相關的元素歸攏到一起,構成單個元素; 多選結構:規定可能出現的多個子表達式; 引用分組:將子表達式匹配的文本存儲起來,供之後引用 這三種用途並不是彼此獨立的,而是相互重疊的: 單純的分組可