作者l10nel (小失)
看板Perl
标题Re: [问题] $ ← Match the end of the line 疑惑
时间Fri Apr 6 03:55:36 2012
※ 引述《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
1F:推 cutecpu:谢谢你!想了好久,刚刚在捷运上好像有点懂了 3q ^_^ 04/08 00:56