讀書筆記《Mastering Regular Expressions》(一)

來源:互聯網
上載者:User
Mastering Regular Expressions

Jerffrey E.F.Friedl著的這本書,聞名已久。九月份從噹噹網郵購了一本,卻一直沒有時間堅持讀,主要原因當然還是英文差,沒有養成閱讀英文的習慣和能力。

後悔呀,當初為什麼不多花點時間在英語上面。

開篇說的那個可怕的、尋找重複單詞的需求非常生動,如果是我遇到這樣的需求,肯定同樣會很苦惱。

  • 檢查N個檔案,找到重複的單詞(比如“this this”),然後報出它們在哪個檔案的哪一行,還要用標準ANSI的逸出序列來高度顯示它們;
  • 不僅如此,還要正確處理這種情況:某行的最後一個單詞,與緊跟著的下一(非空)行的第一個單詞相同,也就是說要能夠跨行工作。
  • 在 尋找過程中,還要忽略大小寫區別,並且能把單詞之間的任意數量空格都等同於單個空格對待,最重要的是,兩個重複單詞中的某一個或兩個被HTML標記包圍 著,那還是算重複單詞!比如“...it is <B>very</B> very important...”

這樣的需求聽上去很討厭,但有了Regex,一切就變得容易了。

下表是基本的元字元:

元字元 名稱 匹配行為 備忘
^ 脫字元 匹配行的起始位置  
$ 美圓符 匹配行的結束位置  
/< 反斜線及小於符 匹配單詞的起始邊界 不是所有版本的的egrep都支援這個特性
/> 反斜線及大於符 匹配單詞的結束邊界
. 匹配任意單個字元
[...] 字元集 匹配所有方括弧中列出的字元
[^...] 字元非集 匹配所有不在方括弧中列出的字元  
| 或符號 匹配或符號分開的的運算式  
(...) 圓括弧 用於指定“或”符號的範圍  

註:

  • 如果一個元字元出現在字元集中(被方括弧括起來的字元列表),則它不再是元字元,比方,點字元在方括弧以外時,它是一個元字元,代表任一字元,如果它出現在方括弧裡,則代表點字元本身。
  • 在字元集和字元非集中中,如果減號字元出現在第一個字元位置,則它代表減號本身,否則它表示一個範圍,比如[-a-z0-9],第一個減號代表減號本身,第二個減號表示範圍,與字元a和z一起表示從a至z的26個英文小寫字母,第三個減號與第二個減號的意義一樣。
  • 字元非集的概念需要仔細,比如,[^X]並不意味著“只要不是字元X就匹配”,而是“匹配一個不是X的任一字元”,前者的意義可以匹配一個空行,但[^X]並不匹配空行。
  • 某些版本的egrep支援-i參數,以執行忽略大小寫匹配操作。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.