Perl學習筆記 No 8

2021-05-22 08:06:08 字數 1948 閱讀 7695

正規表示式的應用

1.   //只是m//的簡寫,/http:/不易閱讀,可以寫成 m或者m%http://%

2.   正斜線不是元字元,如果它不是分隔符,則不需在前面使用反斜線

3.   /fred/i,表示無視大小寫,可以匹配fred,fred,fred,fred等

4.   .不能匹配換行符,但是加上s後,即能匹配所有字元,比如/f.*/s,匹配所有以f開頭的字串

5.   x允許模式中使用空格或者tab來方便閱讀理解,也就是說,將忽略模式中的空格和製表符,比如/ -? /d+ /.? /d* /x

6.   以上3個可選修飾符可以同時使用,並且不限制順序,six,xis,isx,xsi,ixs,sxi

7.   還有其他修飾符...=.=

8.    /^fred/,表示在字串開頭匹配,/fred$/表示在結尾匹配...字串前4個字元,和字串的後4個字元

9.    /^/s*$/ 常見用法,可以匹配空行,如果不用錨定符,則能匹配任意行

10.  詞界錨定,/b,是針對單詞使用的.如//bfred/b/可以匹配上單詞 fred,但不能匹配 frederick,alfred,man fred mann.類似於"全字匹配"

11.  /b,可以只用乙個,嗯,效果大家應該都明白的

12.  /b,表示非詞界錨定,//bfred/b/,將不能匹配fred

13.  =~,含義是這個模式預設將對$_進行匹配,但此時將對左邊的字串進行匹配

14.  模式可以使用引數內插,甚至使用@agrv來獲得

15.

16.   這些匹配變數的值(儲存在記憶體中)會保持不變,直到下乙個模式成功匹配為止

17.   也就是說,乙個沒有匹配成功的模式將不會改變記憶體中相應的值,但乙個匹配上的模式將重寫此記憶體 .這明確的告訴你 ,不要隨意的使用這些變數 ,除非明確知道它們匹配正確;否則,你可能得到上個模式匹配的結果.玩記憶體是不好的...

18.   所以模式匹配對用於條件判斷或while中,匹配之後,盡快使用

19.  $&,$'與$`...perl是符號語言...=.=

20.  那些匹配上的字串將自動儲存在$&中

21.  $&為整個匹配部分(模式中有啥,他有啥),不同於$x,$x僅僅只是模式中相對應的()塊的值

22.  $`是$&沒有的前面的部分,$'是$&沒有的後面的部分

23.  如果你使用了這三個自動匹配變數中的任意乙個,無論在程式的什麼地方,其它地方的正規表示式的執行數度會變慢一些

24.  所以盡量不用...

25.  其他數量詞表示,/a/,表示匹配5到15個a...實際上只要5個以上就能匹配,但是如果輸出最多只能15個. 如果 a 出現了 3 次 ,則次數太少,而不能匹配上;如果出現 5 次 ,則匹配上了 ;如果出現 10 次,仍然匹配上.如果出現 20 次,仍將匹配上,前 15 個將匹配上.

26.  優先順序:

(1). 在此優先順序表的最頂端是括號 :( ),在分組和引用記憶體值的時候使用.括號內部的任何部分比括號外的部分結合更緊密;

(2). 第二級是數量詞.這裡有星號 (*), 加號(+), 問號(?),以及由花括號表示的數量詞,如 , , 等 .它們通常和前一項元素結合.

(3). 第**的是錨定和序列(sequence ) 錨定包括(^) 表明字串的開頭,($) 表明結尾,(/b) 詞界符,(/b) 非詞界符.序列(乙個元素緊接著乙個元素)實際上是一種操作 ,雖然它沒有使用元字元.這段話的含義是乙個單詞中的字母結合更緊密 ,就像錨定緊貼字母一樣.

(4).優先順序最低的是豎線( |),表示或.由於其優先順序最低,它通常將模式劃分成幾個部分 .它在優先順序最底端是因為我們希望像|/fred|barney/裡面的字母比或(|) 結合更緊密. 如果或(| )的優先順序比序列的優先順序更高, 那麼,上述模式的含義是匹配 fre,

接著是 d 或者 b , 然後是 arney.因此,或( |)的優先順序最低 ,字母序列的優先順序要高些 .

27.  乙個模式匹配測試程式

perl學習筆記 8

一行的開頭 一行的結尾 例如 匹配空行。用 轉義特殊字元。i,後面跟個i不區分大小寫。g,後面跟個g匹配全部。沒有g只匹配一次。s 前面跟個s做替換。grep對列表中的元素逐一進行模式匹配操作。練習 f81.pl usr bin perl w pat chomp pat a the phrase t...

perl學習筆記8 z

1 用 printf 和sprintf 格式化輸出 函式printf 有如下的格式化功能 a 圓整浮點數至十進位制的某位。b 以小數點來對齊一列數。c 右對齊和左對齊輸出。d 在輸出行的準確位置插入文字字元。e 以指數形數來顯示浮點數 f 以八進位制或十六進製制的形式顯示無符號的整數。g 用固定字段...

NO 8 記憶體 結構體

乙個程式一般分為3段 text段,data段,bss段 text段 就是放程式 的,編譯時確定,唯讀。data段 存放在編譯階段 而非執行時 就能確定的資料,可讀可寫。bss段 定義而沒有賦初值的全域性變數和靜態變數,放在這個區域。乙個程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器...