我只看了前面兩三章
這書的核心是4、5、6章……
《精通正規表示式》這本書的第四章和第六章比較值得看
1. 多選結構
(mm|gg) 表示匹配 "mm"或"gg"
2. 忽略大小寫
s/source/dest/i
搜尋source,將其替換為dest,此處的i只對source起作用,而不會作用於dest。
3. 單詞分界符
\< 用來匹配單詞的開始
\> 用來匹配單詞的結束
比如: \
cat\>匹配以"cat"結尾的單詞,如scat
則:\必須精確匹配 "cat"
4. 捕獲括號及"反向引用"
在有些支援"反向引用"的地方,括號可以用來表示記憶,這種括號稱為捕獲括號,在後面,可以通過\1、\2、\3等來引用括號內匹配的表示式。(或用$1、$2等引用)
如:m/\/g
表示搜尋兩個相鄰的,重複的單詞。
\s表示任意多個空白字元。
\1就表示前面 ([a-za-z]+)匹配到的內容。 所以,這個表示式的意思就是在開始找到乙個單詞,然後再判斷它後面的那個單詞,是否是一樣的。
注意,如果用 (?:...)括號的話,它就不會起捕獲作用了,它只起分組的作用。
5. 字元組
字元組是放在中的部分。
它類似於宿主語言中的乙個子語言,它裡面定義的元字元與宿主語言的很不相同。
[^...] 排除型字元組
6. 一些轉義字元
\s 可以匹配任何「空白」字元,包括空格、tab、進紙符等。
\s 與\s相反,除\s之外的。(注意,它必要要匹配「字元」!如果不能匹配空)
\d [0-9],即數字。
\d 除\d之外的。
\w [a-za-z0-9],即匹配乙個包含數字、字母的單詞。
\w 除\w之外的。
\b 可以匹配單詞起始 或 單詞結束。
7. 環視功能
環視是用來在字串不匹配任何字元,只匹配文字中的位置,注意,只是位置。
順序環視:從左至右檢視文字,嘗試匹配子表示式,如果能夠匹配,就返回匹配成功資訊。
1) 肯定順序環視:(?=...)
如:文字資訊為:my test string.
表示式: s/(?=test)/first /i
它就能匹配到test左邊的位置!
然後用first 來替換這個位置,因為它只是乙個位置,所以實際上就是插入。(實際上就像: s/^/yeah/g 中的^,在每行的開頭插入"yeah"
最後經過處理的文字資訊為:
my first test string.
2) 否定順序環視:(?!...)
子表示式不能匹配右側文字。
如:(?!\d),就表示該位置的右邊不是數字的時候,就匹配成功。
3) 肯定逆序環視:(?<=...)
子表示式能夠匹配左側文字。
如:(?<=\d\d\d),就表示,在該位置的左邊,必須是3個數字時才會匹配成功。
如:test321ff,如果用上面的表示式來匹配,最終匹配的位置是1的後面,f的前面。
4) 否定逆序環視:(?
子表示式不能匹配左側文字。
8. 條件判斷
結構:(?if then |else)
如:(god)?(?(1)pig|ciahi)
這個表示式就能產生這樣的效果:
如果"god"參與了匹配,在它之後繼續嘗試匹配pig,如果god沒有參與匹配,就會嘗試匹配ciahi。
比如文字是: "godpi is not ciahi", 存在123.txt中。
在perl中使用如下命令:
perl -p -e "s/(god)?(?(1)pig|ciahi)/haha/g" 123.txt
就會輸出:godpi is not haha
再如:(?(?<=num
如果出現了"num:",就會在它後面嘗試匹配\d+,即一些數字。
如果沒有出現"num:",就只匹配\w+,即普通單詞。
9. 忽略優先量詞 *?、+?、??
普通的量詞*、+、?在匹配的時候,會匹配盡可能多的字元。
如:文字為:who is no. 5555?
則表示式 5+ 會將4個5全都匹配。
而忽略優先量詞,匹配的時候只匹配盡可能少的字元。
表示式 5+? 只會匹配1個5.
精通正規表示式 1 正規表示式入門
1 能檢查多個檔案,挑出包含重複單詞的行,高亮標記每個重複單詞 使用標準ansi的轉義字元列 同時必須顯示這行文字來自哪個檔案。2 能跨行查詢,即使兩個單詞乙個在某行末尾而另乙個在下一行的開頭,也算重複單詞。3 能進行不區分大小寫的查詢,例如 the the.重複單詞之間可以出現任意數量的空白字元 ...
《精通正規表示式》筆記
1.多選結構 mm gg 表示匹配 mm 或 gg 2.忽略大小寫 s source dest i 搜尋source,將其替換為dest,此處的i只對source起作用,而不會作用於dest。3.單詞分界符 用來匹配單詞的開始 用來匹配單詞的結束 比如 cat 匹配以 cat 結尾的單詞,如scat...
精通 JS正規表示式
建立正規表示式 js re new regexp a i 第二個引數,表示匹配時不分大小寫 js var re new regexp a gi 匹配所有的a或a 正規表示式還有另一種正規表示式字面量的宣告方式 js var re a gi exec,用正規表示式模式在字串中執行查詢,並返回包 測試正...