正則表達式(一)

正則表達式在線測試:
http://tool.chinaz.com/regex
參考資料:《學習正則表達式》Michael Fitzgerald O'reilly

從匹配北美電話號碼開始

707-827-7019
  1. 匹配 0 到 9 范圍內的任意數字。
    正則表達式中 [] 是元字符,因此方括號不參加匹配。[0-9] 這種形式的正則表達式乘坐字符組,有時候也加字符集。
[0-9]
  1. 希望縮小匹配的數字范圍:
    [012789]

  2. 使用轉義字符 \d:
    使用轉義字符 \d 可以使用以下表達式來匹配文字中的內容。
    \d\d\d-\d\d\d-\d\d\d\d

  3. 如果連接符不是-,而是_或者|:, 那么可以使用如下方式進行匹配:
    \d\d\d.\d\d\d.\d\d\d\d
    那么,他能夠匹配:
    707%827%7019
    707|827|7019

捕獲分組和向后引用

考慮,我們想要匹配 707 , 這個時候我們需要編寫一個捕獲分組和向后引用。使用一對括號,()表示對分組的捕獲。

(\d)\d\1
這個正則表達式的意思:

  • (\d) 匹配第一個數字并將其捕獲, 數字7。
  • \d 匹配第二個數字(數字0), 但是沒有捕獲。
  • \1 表示對捕獲的數字進行反引用(數字7)。

使用量詞

使用量詞可以使正則表達式變得非常簡化并且美觀。

\d {3}-?\d{3}-?\d{4}
量詞一定跟在需要匹配的內容的后面,花括號中的數字表示匹配內容出現的次數。

  • ? 是另外一種量詞,表示可以出現或者只出現一次。
  • + 表示出現一個或者多個。
  • * 表示出現0個或者多個。

更加簡潔的表示方法:
(\d{3, 4}[. -]?) +

這個表達式不是完全對,因為它只能匹配3個或這個4個的數字,需要更加進一步改進。
(\d{3}[. -]?){2}\d{4}

如果區(qū)號也是可選的,并且(707)-827-7019 的括號也是可選的。

707-827-8019
(707)-827-8019
827-8019
8278019

(^\d{3}|\(\d{3}\))?-?\d{3}-?\d{4}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 本文譯自 制作正則引擎的作者 Jan Goyvaerts 為工具 RegexBuddy 寫的教程版權歸原作者所有注...
    極客圈閱讀 3,405評論 0 25
  • 1. 正則表達式 正則表達式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達式、規(guī)則表達式、常規(guī)表示法(英語:Regular...
    xiangang閱讀 749評論 0 3
  • 標題 Synopsis 5: Regexes and Rules 版本 不論何時, 在 grammar 中引用遞歸...
    焉知非魚閱讀 1,094評論 0 0
  • 正則表達式 python無正則表達式,通過別的模塊re(regex模塊)應用過來import re # 引入re模...
    AndroidCat閱讀 366評論 0 0
  • 最近很多朋友關注我寫的關于至簡里提到的姜棗湯,比較好奇,把姜棗湯說的很神奇,能治百病似的,通過我的微信號加我想了...
    章春賢閱讀 2,934評論 0 3

友情鏈接更多精彩內容