【发布时间】:2012-12-31 05:14:10
【问题描述】:
我正在使用 Ruby1.9.3。我是这个平台的新手。
从doc我刚刚熟悉了两个anchor,它们是\z和\G。现在我用\z 玩了一下,看看它是如何工作的,因为定义(End 或 End of String)让我感到困惑,我无法理解它是什么意思是说-End。所以我尝试了下面的小sn-ps。但还是抓不住。
代码
irb(main):011:0> str = "Hit him on the head me 2\n" + "Hit him on the head wit>
=> "Hit him on the head me 2\nHit him on the head with a 24\n"
irb(main):012:0> str =~ /\d\z/
=> nil
irb(main):013:0> str = "Hit him on the head me 24 2\n" + "Hit him on the head >
=> "Hit him on the head me 24 2\nHit him on the head with a 24\n"
irb(main):014:0> str =~ /\d\z/
=> nil
irb(main):018:0> str = "Hit1 him on the head me 24 2\n" + "Hit him on the head>
=> "Hit1 him on the head me 24 2\nHit him on the head with a11 11 24\n"
irb(main):019:0> str =~ /\d\z/
=> nil
irb(main):020:0>
每次我得到nil 作为输出。那么\z 的计算是如何进行的呢? End 是什么意思? - 我认为我的概念与文档中的End 字有任何问题。所以任何人都可以帮助我了解发生的原因以及为什么会发生这种情况?
而且我也没有找到锚\G 的任何示例。请你们提供任何示例来可视化\G 在实时编程中的使用方式?
编辑
irb(main):029:0>
irb(main):030:0* ("{123}{45}{6789}").scan(/\G(?!^)\{\d+\}/)
=> []
irb(main):031:0> ('{123}{45}{6789}').scan(/\G(?!^)\{\d+\}/)
=> []
irb(main):032:0>
谢谢
【问题讨论】:
-
你想匹配什么模式?
-
我正在寻找一个代码来可视化如何使用
\G的样子以及它在模式匹配中的工作原理? -
您不应将答案中的代码包含在您的问题中。新读者可能会认为这是您的代码(并尝试帮助您),这会让他们感到困惑。我已经用一个经过测试的工作示例更新了我的答案。
-
@Cyborgx37 感谢您指导我正确的方向!
+1你的评论!
标签: ruby regex ruby-1.9.3