我遇到以下情况,无法按我预期的方式工作,并且我做错了事,但我无法确定那是什么。脚本匹配句子中的四个字母单词。我想找到一种方法来遍历匹配的组。
x = "This is a statement with four letter words like this"
result = x.match /(\b\w{4}\b)/
=> #<MatchData "This" 1:"This">
不幸的是,$1
包含"This"
,但这就是我所能得到的。$2
应该包含"with"
但它是nil
。我究竟做错了什么?为什么$2
nil
呢?为什么$n
用n>=2
零?
这是因为您的正则表达式仅匹配一次,并且仅包含一个捕获组。
您可能想要:
x.scan /\b\w{4}\b/
这将为您提供所有匹配项的数组。
$1
,$2
...设置为正则表达式的单个匹配中的组,例如
x.match(/(\b\w{4}\b).*(\b\w{4}\b)/)
套$1
到'This'
和$2
到'this'
。
该团体还可以通过访问$~[1]
,$~[2]
...或Regexp.last_match[1]
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句