正則表達(dá)式概述
正則表達(dá)式在程序設(shè)計(jì)語言中存在著廣泛的應(yīng)用,特別是用來處理字符串。如匹配字符串、查找字符串、替換字符串等??梢哉f,正則表達(dá)式是一段文本或一個(gè)公式,它是用來描述用某種模式去匹配一類字符串的公式,并且該公式具有一定的模式。
本小節(jié)將介紹正則表達(dá)式的基本概念、第一個(gè)正則表達(dá)式,以及測(cè)試正則表達(dá)式的工具Code Architects Regex Tester。
什么是正則表達(dá)式
正則表達(dá)式(Regular Expression)起源于人類神經(jīng)系統(tǒng)的早期研究。神經(jīng)生理學(xué)家Warren McCulloch和Walter Pitts研究出一種使用數(shù)學(xué)方式描述神經(jīng)網(wǎng)絡(luò)的方法。1956年,數(shù)學(xué)家Stephen Kleene發(fā)表了一篇標(biāo)題為“神經(jīng)網(wǎng)事件的表示法”的論文,并在該論文中引入了“正則表達(dá)式”這一個(gè)概念。該論文稱正則表達(dá)式是:“正則集的代數(shù)”的表達(dá)式。因此,采用“正則表達(dá)式”這個(gè)術(shù)語。正則表達(dá)式的定義存在多種說法,具體如下:
正則表達(dá)式就是用某種模式去匹配一類字符串的公式,主要用來描述字符串匹配的工具。
正則表達(dá)式描述了一種字符串匹配的模式。它可以用來檢查字符串是否含有某種子串、將匹配的子串做替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。
正則表達(dá)式是由普通字符(如字符a到z)以及特殊字符(稱為元字符)組成的文字模式。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。
正則表達(dá)式就是用于描述某些規(guī)則的工具。這些規(guī)則經(jīng)常用于處理字符串中的查找或替換字符串。換句話說,正則表達(dá)式就是記錄文本規(guī)則的代碼。
正則表達(dá)式就是用一個(gè)“字符串”來描述一個(gè)特征,然后去驗(yàn)證另一個(gè)“字符串”是否符合這個(gè)特征。
學(xué)過《編譯原理》的讀者可能知道不確定有限自動(dòng)機(jī)(Non-deterministic finite automaton,簡(jiǎn)稱NFA)和確定有限自動(dòng)機(jī)(Deterministic finite automaton,簡(jiǎn)稱DFA)。其實(shí),正則表達(dá)式是一個(gè)不確定有限自動(dòng)機(jī)。NFA和DFA的最大區(qū)別在于它們的狀態(tài)轉(zhuǎn)換函數(shù)。NFA可以對(duì)同一個(gè)字符串產(chǎn)生多種理解方式,而DFA則只有唯一的一種理解方式。也正因?yàn)槿绱?,NFA在匹配過程中可能會(huì)回溯,NFA的效率一般要低于DFA。因此,在書寫正則表達(dá)式時(shí)盡量減少回溯來提高正則表達(dá)式的效率。
如果你使用過Windows或DOS下用于文件查找的通配符*和?,那么你不難理解正則表達(dá)式。如果你需要查找所有Word文檔,那么可能使用表達(dá)式*.doc。其中,字符*是一個(gè)通配符,它可以代表任意字符串。正則表達(dá)式和通配符具有相似性,它也可以使用一些字符(如字符.)表示任意字符。然而,它比通配符更具有精確性。
在正則表達(dá)式中,匹配是最常用的一個(gè)詞語,它描述了正則表達(dá)式動(dòng)作結(jié)果。給定一段文本或字符串,使用正則表達(dá)式從文本或字符串中查找出符合正則表達(dá)式的字符串。有可能文本或字符存在不止一個(gè)部分滿足給定的正則表達(dá)式,這時(shí)每一個(gè)這樣的部分被稱為一個(gè)匹配。其中,匹配存在下面3種類型:
形容詞性的匹配,即一個(gè)字符串匹配一個(gè)正則表達(dá)式。
動(dòng)詞性的匹配,即在文本或字符串里匹配正則表達(dá)式。
名詞性的匹配,即字符串中滿足給定的正則表達(dá)式的一部分。
正則表達(dá)式的應(yīng)用非常廣泛,特別是在字符串處理方面。目前來說,正則表達(dá)式已經(jīng)在很多軟件中得到廣泛了應(yīng)用,如Linux、Unix、HP等操作系統(tǒng),C#、PHP、Java等程序開發(fā)環(huán)境,以及很多的應(yīng)用軟件中,都可以看到正則表達(dá)式的這樣或那樣的應(yīng)用。正則表達(dá)式常見的應(yīng)用如下:
驗(yàn)證字符串,即驗(yàn)證給定的字符串或子字符串是否符合指定特征,譬如驗(yàn)證是否是合法的郵件地址、驗(yàn)證是否為合法的HTTP地址等。
查找字符串,從給定的文本中查找符合指定特征的字符串,比查找固定字符串更加靈活方便。
替換字符串,即把給定的字符串中的符合指定特征的子字符串替換為其他字符串,比普通的替換更強(qiáng)大。
提取字符串,即從給定的字符串中提取符合指定特征的子字符串。
正則表達(dá)式概述 什么是正則表達(dá)式
2020-08-10 20:46正則教程網(wǎng) 正則表達(dá)式
正則表達(dá)式就是用某種模式去匹配一類字符串的公式,主要用來描述字符串匹配的工具
延伸 · 閱讀
- 2022-03-10Python全棧之正則表達(dá)式
- 2022-03-06CentOS中的正則表達(dá)式
- 2022-03-06詳解Android過濾emoji表情正則表達(dá)式
- 2022-03-05linux系統(tǒng)用戶管理與grep正則表達(dá)式示例教程
- 2022-03-03C++ 正則表達(dá)式的應(yīng)用詳解
- 2022-03-03C# 中使用正則表達(dá)式匹配字符的含義
- 正則表達(dá)式
JavaScript 正則表達(dá)式 驗(yàn)證整數(shù)、小數(shù)、實(shí)數(shù)、有效位小數(shù)最簡(jiǎn)單
JavaScript 正則表達(dá)式 驗(yàn)證整數(shù)、小數(shù)、實(shí)數(shù)、有效位小數(shù)最簡(jiǎn)單,輸入完按回車后即可驗(yàn)證!(自認(rèn)為最簡(jiǎn)單?。?..
- 正則表達(dá)式
解決preg_match匹配過多字符長(zhǎng)度的限制的思路分析
今天在寫采集程序的時(shí)候,使用到了preg_match,但是有幾個(gè)頁(yè)面始終采集不下來。反復(fù)看了N遍的正則,沒有發(fā)現(xiàn)有問題。于是開始懷疑preg_match是否對(duì)匹配的...
- 正則表達(dá)式
正則表達(dá)式re.sub替換不完整的問題及完整解決方案
re.sub是個(gè)正則表達(dá)式方面的函數(shù),用來實(shí)現(xiàn)通過正則表達(dá)式,實(shí)現(xiàn)比普通字符串的replace更加強(qiáng)大的替換功能。這篇文章主要介紹了正則表達(dá)式re.sub替換不完...
- 正則表達(dá)式
js通過正則匹配沒有內(nèi)容的空標(biāo)簽
這篇文章主要介紹了js通過正則匹配沒有內(nèi)容的空標(biāo)簽,需要的朋友可以參考下...
- 正則表達(dá)式
JS正則表達(dá)式驗(yàn)證數(shù)字(非常全)
正則表達(dá)式,又稱規(guī)則表達(dá)式,在項(xiàng)目中經(jīng)常會(huì)用到正則表達(dá)式,今天小編抽空給大家分享js正則表達(dá)式驗(yàn)證數(shù)字的方法,感興趣的朋友參考下吧...
- 正則表達(dá)式
asp去除html標(biāo)記與空格的正則
用asp實(shí)現(xiàn)的去除內(nèi)容的html標(biāo)記和空格的實(shí)現(xiàn)代碼,正在學(xué)習(xí)正則表達(dá)式的朋友可以參考下...
- 正則表達(dá)式
常用正則表達(dá)式語法例句
本文主要分享一些常用正則表達(dá)式語法例句,具有一定的參考價(jià)值,有需要的朋友可以了解下...
- 正則表達(dá)式
正則表達(dá)式概述 什么是正則表達(dá)式
正則表達(dá)式就是用某種模式去匹配一類字符串的公式,主要用來描述字符串匹配的工具...