5

这应该是一个简单的问题,但我找不到任何关于它的信息。

给定 Ruby 中的正则表达式,对于每个匹配项,我都需要检索匹配的模式$1, $2,但我还需要匹配位置。

我知道=~操作员给了我第一个匹配的位置,同时string.scan(/regex/)给了我所有匹配的模式。如果可能的话,我需要在同一步骤中获得两个结果。

4

2 回答 2

9

匹配数据

string.scan(regex) do
  $1           # Pattern at first position
  $2           # Pattern at second position
  $~.offset(1) # Starting and ending position of $1
  $~.offset(2) # Starting and ending position of $2
end
于 2012-11-27T17:20:10.373 回答
2

您可以像这样在扫描中访问匹配数据:

"abcdefghij".scan(/\w/) {p $~}
于 2012-11-27T17:26:01.593 回答