Re: [問題] $ ← Match the end of the line 疑惑

看板Perl作者 (小失)時間13年前 (2012/04/06 03:55), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《cutecpu (可愛中央處理器)》之銘言: : #!/usr/bin/perl -w : $_ = "1\n"; : while(/.?$/sg){ : print "match:[$&]\n"; : } : 上面程式碼跑出結果: 用 ^ 表示內部指標,指標永遠指向兩個字元之間的空隙(而非某個字元)。 一開始,指向字元"1"之前位置 ^1\n match 成功(因為根據 $ 的語義一,它可 match 到 \n 之前的位置) : match:[1] 指標向前挪一格 1^\n match 成功(因為根據 $ 的語義二,它也可 match 到字串結尾的位置) : match:[ : ] 指標向前挪一格 1\n^ match 成功($ 的意思是語義二:字串結尾,但是你指定 .? 所以成功抓到空字串) : match:[] 這時指標無法再向前,結束。 : 除了跑出 match:[1] 我比較能理解外 : 接下來 match:[換行] (雖然我知道後面有修飾子 s 時,可以讓 . 也 match 換行 : 但不曉得現在 $ anchor 是已經跑到哪邊了,那它可以 match 到換行) : 還有最後的 match:[空字串] 也讓我很疑惑 : 有人能知道 → /.?$/sg ,$ anchor 的行為嗎? : pelre 上只提到說: : 「$ Match the end of the line (or before newline at the end)」 : 但我卻無法從上面那句理解以上程式的行為(苦惱中) : 謝謝 ^_^ 在 m 模式下,$ 有第三個意思:多行字串中,每一行的結尾。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.198.133.1

04/08 00:56, , 1F
謝謝你!想了好久,剛剛在捷運上好像有點懂了 3q ^_^
04/08 00:56, 1F
文章代碼(AID): #1FVVYxEF (Perl)
文章代碼(AID): #1FVVYxEF (Perl)