Re: [問題] $ ← Match the end of the line 疑惑
※ 引述《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
04/08 00:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章