相关疑难解决方法(0)

前瞻和后视概念如何在Ruby的Regex中支持这种零宽度断言概念?

我刚刚Zero-Width Assertions从文档中了解了这个概念.一些快速的问题进入我的脑海 -

  • 为何这样的名字Zero-Width Assertions
  • 如何Look-aheadlook-behind概念支持这样的 Zero-Width Assertions概念?
  • 什么这样?<=s,<!s,=s,<=s- 4符号指示模式里面?你能帮助我在这里专注于了解实际发生的事情

我还尝试了一些微小的代码来理解逻辑,但对那些输出没有那么自信:

irb(main):001:0> "foresight".sub(/(?!s)ight/, 'ee')
=> "foresee"
irb(main):002:0> "foresight".sub(/(?=s)ight/, 'ee')
=> "foresight"
irb(main):003:0> "foresight".sub(/(?<=s)ight/, 'ee')
=> "foresee"
irb(main):004:0> "foresight".sub(/(?<!s)ight/, 'ee')
=> "foresight"
Run Code Online (Sandbox Code Playgroud)

谁能帮助我在这里理解?

编辑

在这里,我尝试了两个片段,其中"Zero-Width Assertions"概念如下:

irb(main):002:0> "foresight".sub(/(?!s)ight/, 'ee')
=> "foresee"
Run Code Online (Sandbox Code Playgroud)

另一个没有"零宽度断言"概念如下:

irb(main):003:0> "foresight".sub(/ight/, 'ee')
=> "foresee"
Run Code Online (Sandbox Code Playgroud)

以上两者都产生相同的输出,现在内部如何regexp通过它们自己移动来产生输出 - 你能帮我形象化吗?

谢谢

ruby regex ruby-1.9.3

7
推荐指数
2
解决办法
971
查看次数

标签 统计

regex ×1

ruby ×1

ruby-1.9.3 ×1