程序代碼是對現(xiàn)實事物處理邏輯的抽象,而正則表達(dá)式,則是對復(fù)雜的字符匹配程序代碼的進(jìn)一步抽象;也就是說,高度簡潔的正則表達(dá)式,可以認(rèn)為其背后所對應(yīng)的,是字符匹配程序代碼,而字符匹配程序代碼,背后對應(yīng)的是字符匹配處理邏輯。
字符匹配處理邏輯,可以抽象為字符匹配程序代碼;字符匹配程序代碼,可以再進(jìn)一步,抽象為高度簡潔的正則表達(dá)式。
相對于字符匹配程序代碼,正則表達(dá)式不需要使用 if、then、else 等關(guān)鍵字,也不需要調(diào)用 find、showMessage 等函數(shù),這些在正則表達(dá)式中都已經(jīng)隱含了。也就是說,正則表達(dá)式解析引擎,會自動按類似邏輯進(jìn)行解析,這也就是正則表達(dá)式“高度簡潔”的體現(xiàn)。
編程語言的發(fā)展歷程:
序員主要負(fù)責(zé)分析問題,以及使用第 4 代語言來描述問題,而無需花費大量時間,去考慮具體的處理邏輯和算法實現(xiàn),處理邏輯和算法實現(xiàn)是由編譯器(Compiler)或解釋器(Interpreter)這樣的語言解析引擎來負(fù)責(zé)的。
編程范式(Programming Paradigm),指的是計算機編程中的基本風(fēng)格和典范模式,是程序員在其所創(chuàng)造的程序虛擬世界中自覺不自覺地所采用的世界觀和方法論。
常見的編程范式大致上有:命令式、聲明式(包括了函數(shù)式、邏輯式等)、面向?qū)ο笫?、泛型式、并發(fā)式、切面式等。每種編程范式都引導(dǎo)著程序員,根據(jù)其特有的傾向(即世界觀)和思路(即方法論)去分析和解決編程問題。
1、命令式編程
命令式編程范式,主要就是模擬電腦運算的過程。更進(jìn)一步地來說,是直接模擬目前主流的馮·諾依曼機(Von Neumann Machine)的運算過程,是對馮·諾伊曼機運行機制的抽象。
馮·諾伊曼機的基本特點是,在程序計數(shù)器的集中控制下,按順序依次從內(nèi)存中獲取指令和數(shù)據(jù),然后進(jìn)行執(zhí)行,因此它是以控制驅(qū)動的控制流方式工作的。與馮·諾依曼機相對應(yīng)的還有以數(shù)據(jù)驅(qū)動的數(shù)據(jù)流方式工作的數(shù)據(jù)流機,以及以需求驅(qū)動的數(shù)據(jù)流方式工作的歸約機等。
采用命令式編程范式的程序,是由若干行動指令所組成的有序指令列表,也就是由一系列指明執(zhí)行順序的祈使句——“先做這,再做那”所組成,屬于行動導(dǎo)向,強調(diào)的是定義問題的解法——即“怎么做”,因而算法是顯性的而目標(biāo)是隱性的。因此,從編程范式的角度來看:
- 命令式編程的世界觀是:程序是由若干行動指令組成的有序列表;
- 命令式編程的方法論是:用變量來存儲數(shù)據(jù),用語句來執(zhí)行指令。
2、聲明式編程范式
聲明式編程范式,主要是模擬人腦思維的過程。聲明式重目標(biāo)、輕過程,專注問題的分析和表達(dá),而不是算法實現(xiàn)。它不用指明執(zhí)行順序,屬于目標(biāo)導(dǎo)向,強調(diào)的是定義問題的描述——即“做什么”,因而目標(biāo)是顯性而算法是隱性的。
從編程范式的角度來看:聲明式編程的世界觀是:
- 程序是由若干目標(biāo)任務(wù)組成的有序列表;
- 聲明式編程的方法論是:用語法元素來描述任務(wù),由解析引擎轉(zhuǎn)化為指令并執(zhí)行。
聲明式編程的代表語言為 SQL、SAS、SPSS、LaTeX、Regex(即正則表達(dá)式)等。
正則從編程范式的角度上來看,其實是屬于聲明式編程范式,并且是專用于處理文本查找匹配這個特定領(lǐng)域的專門語言。
正則表達(dá)式中的語法元素——元字符、元轉(zhuǎn)義序列與特殊結(jié)構(gòu),可理解為某種具體的程序邏輯和算法的體現(xiàn)。注意,這里提到的元轉(zhuǎn)義序列,指的是相對于將元字符轉(zhuǎn)義為字符本義的普通轉(zhuǎn)義序列來說的。文章來源:http://www.zghlxwxcb.cn/news/detail-698467.html
此文章為8月Day30學(xué)習(xí)筆記,內(nèi)容來源于極客時間《正則表達(dá)式入門課》,推薦該課程。文章來源地址http://www.zghlxwxcb.cn/news/detail-698467.html
到了這里,關(guān)于從編程語言的角度來理解正則表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!