學習筆記 第一章

正則表達式由兩種字符組成:元字符 和 普通字符(文字)

行的開始和結束:
脫字符號 ^ :行的開始 —— ^cat 只尋找行首的cat
美元符號 cat 只尋找行尾的 cat

正則表達式結構體:[ ] ,也就是字符組,裏面是“或”的意思,應該是隻能出現一個!前面的成立,後面的就不繼續了。
在字符組內部,- 表示連字符 < H[123456]> 和 < H[1-6]>的意思是一樣的
注意:只有在字符組內部,- 纔是元字符,否則就簡單是一個連字符號
如果 - 出現在字符組的開頭,例如 [-abc],那麼就表示簡單的一個連字符號。
同理,點號 和 問號 通常被認爲元字符處理,但是在字符組中並不是這樣。
[0-9A-Z_!.?] : 元字符之後兩個 - ,其他都是普通文本字符

排除性字符組:[^1-6] 不希望出現任何 1-6 之間的數字
像英語單詞一樣,在不同的語境下的語義是不一樣的,元字符也是如此。

用點號(.)匹配任意字符
記住:字符組裏面和外面,元字符的定義和意義是完全不一樣的。
寫正則表達式時候,我們要在對欲檢索文本的瞭解程度和檢索精確性之間求得平衡。
egrep ‘gr(.)y’ zhengze.txt

多選結構
| “或”的意思
gr[ea]y : gray|grey 或者是 gr(e|a)y
正常情況下,括號也是元字符
egrep ‘gr(a|e)y’ zhengze.txt –color=auto

字符組基本上是一種獨立的微語言(例如對於元字符,有他們自己的約定),而多選結構是“正則表達式語言主體”的一部分。

注意:egrep ‘^(Date|email|name):’ zhengze.txt 和 egrep ‘^Date|email|name:’ zhengze.txt 的區別
(不過經我測驗,在我的環境下,這二者是一致的)

忽略大小寫: -i 參數
egrep -i ‘^Date|email|name:*’ zhengze.txt

單詞分解符:\< 開頭, >結尾
注:可能有的egrep不支持

[ ^x] :
不是:只有這個位置不是x才匹配(可以匹配空行)
而是:匹配一個不是x的字符(不可以匹配空行)

選項字符 ?(控制緊鄰元素)
把它加在一個字符的後面,就表示此處允許出現這個字符,不過他的出現並非匹配成功的必要條件。
egrep ‘date?’ zhengze.txt 表示:可能匹配 date 或者 dat任意字符(包括空)

其他量詞:重複出現
…*:表示之前緊鄰的元素出現一次或多次,或者不出現。意思:匹配儘可能多的次數,如果實在無法匹配,也沒關係
…+:匹配儘可能多的次數,但如果連一次都無法完成,就報告失敗

規定重複出現的次數:區間{}

括號和反向引用
egrep ‘\<([a-z]+) +\1>’ zhengze.txt –color=auto
\1 可以代表:第一個括號匹配的內容

*轉義:反斜槓 *

字符:字符在計算機領域是一個很有意思的單詞。
一個字節所代表的單詞取決於計算機如何解釋。單個字節的值不會變化,但這個值所代表的字符卻是由解釋所用的編碼來決定的。
例如:值爲 64 和 53 的字節,在 ASCII 編碼中分別代表了字符“@” 和 “5”,但在 EBCDIC編碼中,則是完全不同的字符。

字節如何解釋是編碼的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章