微軟的Regex教程(一):Regex簡介

來源:互聯網
上載者:User

認識Regex

如果原來沒有使用過Regex,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。

請回想一下在硬碟上是如何尋找檔案的。您肯定會使用 ? 和 * 字元來協助尋找您正尋找的檔案。? 字元匹配檔案名稱中的單個字元,而 * 則匹配一個或多個字元。一個如 'data?.dat' 的模式可以找到下述檔案:

data1.dat

data2.dat

datax.dat

dataN.dat

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

data.dat

data1.dat

data2.dat

data12.dat

datax.dat

dataXYZ.dat

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

Regex的早期起源

Regex的“祖先”可以一直上溯至對人類神經系統如何工作的早期研究。Warren McCulloch 和 Walter Pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網路。

1956 年, 一位叫 Stephen Kleene 的美國數學家在 McCulloch 和 Pitts 早期工作的基礎上,發表了一篇標題為“神經網事件的標記法”的論文,引入了Regex的概念。Regex就是用來描述他稱為“正則集的代數”的運算式,因此採用“Regex”這個術語。

隨後,發現可以將這一工作應用於使用Ken Thompson 的計算搜尋演算法的一些早期研究,Ken Thompson是Unix 的主要發明人。Regex的第一個實用應用程式就是 Unix 中的qed 編輯器。

如他們所說,剩下的就是眾所周知的曆史了。從那時起直至現在Regex都是基於文本的編輯器和搜尋工具中的一個重要部分。

使用Regex

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

使用Regex,就可以:

  • 測試字串的某個模式。例如,可以對一個輸入字串進行測試,看在該字串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為資料有效性驗證。
  • 替換文本。可以在文檔中使用一個Regex來標識特定文字,然後可以全部將其刪除,或者替換為別的文字。
  • 根據模式比對從字串中提取一個子字串。可以用來在文本或輸入欄位中尋找特定文字。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.