《精通正規表示式》筆記

2021-05-02 13:10:19 字數 2274 閱讀 2012

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//<([a-za-z]+)/s/1/>/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:)/d+|/w+)

如果出現了"num:",就會在它後面嘗試匹配/d+,即一些數字。

如果沒有出現"num:",就只匹配/w+,即普通單詞。

9. 忽略優先量詞 *?、+?、??

普通的量詞*、+、?在匹配的時候,會匹配盡可能多的字元。

如:文字為:who is no. 5555?

則表示式 5+ 會將4個5全都匹配。

而忽略優先量詞,匹配的時候只匹配盡可能少的字元。

表示式 5+? 只會匹配1個5.

精通正規表示式

我只看了前面兩三章 這書的核心是4 5 6章 精通正規表示式 這本書的第四章和第六章比較值得看 1.多選結構 mm gg 表示匹配 mm 或 gg 2.忽略大小寫 s source dest i 搜尋source,將其替換為dest,此處的i只對source起作用,而不會作用於dest。3.單詞分界...

精通正規表示式 1 正規表示式入門

1 能檢查多個檔案,挑出包含重複單詞的行,高亮標記每個重複單詞 使用標準ansi的轉義字元列 同時必須顯示這行文字來自哪個檔案。2 能跨行查詢,即使兩個單詞乙個在某行末尾而另乙個在下一行的開頭,也算重複單詞。3 能進行不區分大小寫的查詢,例如 the the.重複單詞之間可以出現任意數量的空白字元 ...

精通 JS正規表示式

建立正規表示式 js re new regexp a i 第二個引數,表示匹配時不分大小寫 js var re new regexp a gi 匹配所有的a或a 正規表示式還有另一種正規表示式字面量的宣告方式 js var re a gi exec,用正規表示式模式在字串中執行查詢,並返回包 測試正...