磨練構建正規表示式模式的技能(轉)
透過本文的學習,您可以增加一些有用的設計實際正規表示式 (regexp) 的技能。構建正規表示式是任何管理員日常工作中的一部分。為了構造返回所需條件的成功正規表示式,需要學習以模式匹配的角度進行思考,而這種技能需要花大量的時間進行練習。
引言
UNIX® 管理員每天都需要構建和使用正規表示式 (regexp) 進行文字模式匹配。大多數語言都支援正規表示式的某種實現。有的應用程式(如 EMACS)具有正規表示式搜尋功能,並且您可以透過各種命令列工具使用正規表示式。無論什麼應用程式,構建正確的正規表示式的關鍵之處在於,識別僅滿足需要匹配的資料的模式,以便在輸入中排除其他不必要的內容。
出於這個目的,本文將逐步介紹幾種正規表示式模式構建技巧,並介紹它們如何幫助您完成各種常規任務。
使用正規表示式 (regexp)
除非特別說明,否則本文中使用的示例都是擴充套件可移植作業系統介面(擴充套件 POSIX)的正規表示式。如果透過命令列(如使用 egrep 實用工具)使用它們,您應該根據需要引用各種正規表示式。請記住,不同的正規表示式實現之間存在一些區別,您可能不得不適應所使用的特定的工具、應用程式或語言中的具體實現。
匹配整行內容
^ 元字元匹配行首,而 $ 匹配行尾,如果將它們組合在一起(如 ^$),它們將匹配空行。(這個表示式的映象,即 $^,是不可能匹配成功的,它將永遠 都無法匹配到有效行。)這個基本的正規表示式是許多複雜正規表示式的基礎,如果您還不習慣使用這個基本的正規表示式,那麼您應該逐步養成使用它的習慣。使用它來構建匹配整行內容 的模式。
在使用者字典檔案 (/usr/dict/words) 中搜尋是一個很好的基本模式。(有些版本的 UNIX 將使用者字典放在 /usr/share/dict/words 中。)
例如,假設您忘記了如何拼寫單詞 fuchsia。其中是否包含 sh 或 cs 呢?您所知道的只是,它以 fu 開頭並以 ia 結尾。
嘗試使用這個模式進行搜尋:
$ egrep -i '^fu.*ia$' /usr/dict/words
-i 標誌表示在搜尋過程中不區分大小寫。在這個示例中,因為 fuchsia 拼寫正確,所以在返回的單詞中包括這個單詞。
根據長度匹配行
使用大括號元字元 ({ }) 指定前面的正規表示式匹配多少次,如表 1 所示。當您將它們新增到剛才介紹的整行搜尋中時,您可以指定行的長度。
表 1. 大括號元字元的含義
示例描述
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-941666/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 正規表示式支配匹配模式模式
- 正規表示式 貪婪模式模式
- 模式匹配與正規表示式模式
- [轉]UltraEdit正規表示式
- 正規表示式學習和練習
- 常用有效的正規表示式【轉】
- 正規表示式模式修飾符模式
- 常用正規表示式匹配模式(java)模式Java
- 正規表示式 轉義字元字元
- c# 正規表示式(轉)C#
- 正規表示式語法(轉)
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- PHP中的正規表示式及模式匹配PHP模式
- 正規表示式需要轉義的字元字元
- 正規表示式中的特殊字元(轉)字元
- JavaScript中的正規表示式(2) (轉)JavaScript
- JavaScript中的正規表示式(1) (轉)JavaScript
- 正規表示式
- 正規表示式使用詳解(轉)
- 深入分析正規表示式的子模式模式
- PostgreSQL中的模式匹配和正規表示式 - DasSQL模式
- JavaScript的正規表示式JavaScript
- JS 的正規表示式JS
- 正規表示式需要轉義的特殊字元字元
- vi 中的正規表示式 (Regular Expression)(轉)Express
- JS常用正規表示式及驗證時間的正規表示式JS
- 正規表示式:貪婪模式與非貪婪模式模式
- 正規表示式貪婪模式與非貪婪模式模式
- 轉義正規表示式中特殊字元字元
- UltraEdit利用正規表示式查詢(轉)
- 在JAVA中使用正規表示式 (轉)Java
- 正規表示式學習筆記 (轉)筆記
- 【JavaScript】正規表示式JavaScript
- php –正規表示式PHP
- 正規表示式 教程
- 正規表示式 split()
- java正規表示式Java
- PHP正規表示式PHP