精通正規表示式

2021-06-19 18:25:25 字數 2310 閱讀 3567

我只看了前面兩三章

這書的核心是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,用正規表示式模式在字串中執行查詢,並返回包 測試正...