正規表示式

2021-06-27 14:38:29 字數 1540 閱讀 1804

正規表示式(regular expression,縮寫為regexp,regex或regxp),又稱正規表示式或常規表示式,是指乙個用來描述或者匹配一系列符合某個句法規則的字串的單個字串。在很多文字編輯器或其他工具裡,正規表示式通常被用來檢索和/或替換那些符合某個模式的文字內容。許多程式語言都支援利用正規表示式進行字串操作。例如,在perl中就內建了乙個功能強大的在正規表示式引擎。正規表示式這個概念最初是由unix中的工具軟體(例如sed和grep)普及開的。

目錄基本概念

正規表示式也經常被稱為模式,用來描述或者匹配一系列符合某個句法規則的字串。例如,handel,händel,和haendel三個字串,都可以由"h(a|ä|ae)ndel"這個模式來描述。大部分形式都有如下的結構:替換|

豎直分隔符代表替換。例如"gray|grey"可以匹配grey或gray。

數量限定

某個字元後的數量限定符用來限定前面這個字元允許出現的個數。最常見的數量限定符包括+, ?,和*(不加數量限定則代表出現一次且僅出現一次):

加號代表前面的字元必須至少出現一次。例如,"goo+gle"可以匹配google,gooogle,goooogle等;

問號代表前面的字元最多隻可以出現一次。例如,"colou?r"可以匹配colour或者color;

星號代表前面的字元可以不出現,也可以出現一次或者多次。例如,"0*42"可以匹配42,042,0042,00042等。

捕獲圓括號可以用來定義操作符的範圍和優先度。例如,"gr(a|e)y"等價於"gray|grey","(grand)?father"匹配father和grandfather。

上述這些構造子都可以自由組合,因此,"h(ae?|ä)ndel"和"h(a|ae|ä)ndel"是相同的。

精確的語法可能因不同的工具或程式而異。

歷史

最初的正規表示式出現於理論電腦科學的自動控制理論和形式語言理論中。在這些領域中有對計算(自動控制)的模型和對形式語言描述與分類的研究。2023年代,warren mcculloch與walter pitts將神經系統中的神經元描述成小而簡單的自動控制元。稍後,數學家stephen kleene利用稱之為正則集合的數學符號來描述此模型。ken thompson將此符號系統引入編輯器qed,然後是unix上的編輯器ed,並最終引入grep。自此,正規表示式被廣泛地使用於各種unix或者類似unix的工具,例如perl。

perl正規表示式源自於henry spencer寫的regex,它已經演化成了pcre(perl相容正規表示式perl compatible regular expressions),乙個由philip hazel開發的,為很多現代工具所使用的庫。

各計算機語言之間的正規表示式的整合目前開展的很差。未來的perl6的子專案apocalypse的設計中已考慮到了這點。

表示式全集

參考條目

外部鏈結

* 各種不同風格的正規表示式

* 正規表示式的介紹(jscript.net)

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...