返回上一次 m//g
搜索在目标变量中停止的位置的偏移量(当未指定变量时,使用 $_
)。除非使用了(不再推荐的)use bytes
编译指示,否则此偏移量以字符为单位,在这种情况下,偏移量以字节为单位。请注意,0 是一个有效的匹配偏移量。 undef
表示搜索位置已重置(通常是由于匹配失败,但也可能是因为尚未对标量进行匹配)。
pos
直接访问正则表达式引擎用来存储偏移量的地址,因此对 pos
进行赋值将更改该偏移量,从而也会影响正则表达式中的 \G
零宽度断言。这两种效果都会在下次匹配时生效,因此您无法在当前匹配中使用 pos
来影响位置,例如在 (?{pos() = 5})
或 s//pos() = 5/e
中。
设置 pos
还会重置 匹配零长度 标志,这在 "perlre 中的“重复模式匹配零长度子字符串”" 中有描述。
由于失败的 m//gc
匹配不会重置偏移量,因此在这种情况下,pos
的返回值也不会改变。请参阅 perlre 和 perlop。