Perl 6 - :p(2) 和 :c(2) 的区别

正则表达式中, :p(2):c(2) 的区别

:p 中的 p 是单词 「position」 的首字母。:c 中的 c 是单词 「continue」 的首字母。它们的长形式分别是 :pos:continue

  • Continue

:continue 或短形式的 :c 副词接受一个参数。这个参数就是正则表达式开始搜索的起始位置。默认地,正则表达式从字符串的开头开始搜素,但是 :c 重写了起始位置。如果没有为 :c 指定位置,那么位置默认为 0,除非设置了 $/,在这种情况下,位置默认为 $/.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 参数会让匹配继续进行,让正则引擎移动到下一个位置, 是字符 e, 再进行匹配,匹配成功。

第二个,从位置 3 处开始匹配,模式 e.+ 在这个位置不匹配,匹配失败。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容