Perl 6 - :p(2) 和 :c(2) 的區(qū)別

正則表達(dá)式中, :p(2):c(2) 的區(qū)別

:p 中的 p 是單詞 「position」 的首字母。:c 中的 c 是單詞 「continue」 的首字母。它們的長形式分別是 :pos:continue

  • Continue

:continue 或短形式的 :c 副詞接受一個參數(shù)。這個參數(shù)就是正則表達(dá)式開始搜索的起始位置。默認(rèn)地,正則表達(dá)式從字符串的開頭開始搜素,但是 :c 重寫了起始位置。如果沒有為 :c 指定位置,那么位置默認(rèn)為 0,除非設(shè)置了 $/,在這種情況下,位置默認(rèn)為 $/.to

  • Pos

如果指定了匹配的起始位置,而模式在這個位置不匹配,那么匹配失敗。如果指定了 :continue,而模式在這個位置不匹配,那么它會嘗試從那個位置之后的位置匹配。:continue 很像 Perl 5 的 /gc ,而 :pos 很像 Perl 5 的 /gc 并在模式的開頭加上一個 \G 斷言。

例子:

say "abcdefg" ~~ m:c(3)/e.+/; # OUTPUT??efg?
?
say "abcdefg" ~~ m:p(3)/e.+/; # OUTPUT?False
?

第一個,從位置 3 處開始匹配,是字符 d,模式 e.+ 在這個位置不匹配,而 c 參數(shù)會讓匹配繼續(xù)進(jìn)行,讓正則引擎移動到下一個位置, 是字符 e, 再進(jìn)行匹配,匹配成功。

第二個,從位置 3 處開始匹配,模式 e.+ 在這個位置不匹配,匹配失敗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容