關於正規表示式

2021-08-29 07:00:15 字數 1260 閱讀 4166

如果原來沒有使用過正規表示式,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。請回想一下在硬碟上是如何查詢檔案的。您肯定會使用 ? 和 * 字元來幫助查詢您正尋找的檔案。? 字元匹配檔名中的單個字元,而 * 則匹配乙個或多個字元。乙個如 'data?.dat' 的模式可以找到下述檔案:

如果使用 * 字元代替 ? 字元,則將擴大找到的檔案數量。'data*.dat' 可以匹配下述所有檔名:

儘管這種搜尋檔案的方法肯定很有用,但也十分有限。? 和 * 萬用字元的有限能力可以使你對正規表示式能做什麼有乙個概念,不過正規表示式的功能更強大,也更靈活。

正規表示式的早期起源

正規表示式的「祖先」可以一直上溯至對人類神經系統如何工作的早期研究。warren mcculloch 和 walter pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網路。

1956 年, 一位叫 stephen kleene 的美國數學家在 mcculloch 和 pitts 早期工作的基礎上,發表了一篇標題為「神經網事件的表示法」的**,引入了正規表示式的概念。正規表示式就是用來描述他稱為「正則集的代數」的表示式,因此採用「正規表示式」這個術語。

隨後,發現可以將這一工作應用於使用ken thompson 的計算搜尋演算法的一些早期研究,ken thompson是unix 的主要發明人。正規表示式的第乙個實用應用程式就是 unix 中的qed 編輯器。

如他們所說,剩下的就是眾所周知的歷史了。從那時起直至現在正規表示式都是基於文字的編輯器和搜尋工具中的乙個重要部分。

使用正規表示式

在典型的搜尋和替換操作中,必須提供要查詢的確切文字。這種技術對於靜態文字中的簡單搜尋和替換任務可能足夠了,但是由於它缺乏靈活性,因此在搜尋動態文字時就有困難了,甚至是不可能的。

使用正規表示式,就可以:

測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個**號碼模式或乙個信用卡號碼模式。這稱為資料有效性驗證。

替換文字。可以在文件中使用乙個正規表示式來標識特定文字,然後可以全部將其刪除,或者替換為別的文字。

根據模式匹配從字串中提取乙個子字串。可以用來在文字或輸入欄位中查詢特定文字。

例如,如果需要搜尋整個 web 站點來刪除某些過時的材料並替換某些html 格式化標記,則可以使用正規表示式對每個檔案進行測試,看在該檔案中是否存在所要查詢的材料或 html 格式化標記。用這個方法,就可以將受影響的檔案範圍縮小到包含要刪除或更改的材料的那些檔案。然後可以使用正規表示式來刪除過時的材料,最後,可以再次使用正規表示式來查詢並替換那些需要替換的標記。

關於正規表示式

前言 regular expressions 正規表示式,以下用re稱呼 對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網...

關於正規表示式

使用atl中的正規表示式總是會多多少少的出問題,比如 不能識別,一些其他字元不能識別等等,所以使用了greta解決了那個問題 int caddmaker regexmatch cstring strs,cstring regex,cstringarray result match results r...

關於 正規表示式

網路程式設計中正規表示式的使用 最近開發涉及到很多網路程式設計和解析方面的,使用到正規表示式,剛開始一看,我暈,亂碼啊,這個到底是神馬啊。比如說下面這個東西 qregexp rx s 1234567890 正規表示式的概念就不仔細介紹,網上很多,也很清晰。下面只是此人個人觀點,與我本人無關,如有錯漏...