1

我一直试图在文档中找到类似的东西,但失败了。我想要的是迭代字符串中的正则表达式匹配,并传递MatchData给块。

  • Regexp#match,但它只找到一个匹配项;
  • String#scan,但块只接收捕获数组或匹配字符串,而不是完整的MatchData。这对 Oniguruma 来说尤其糟糕,因为您失去了命名的捕获功能。
  • 还有Regexp::last_match,所以我实际上可以走这scan条路,但它看起来丑陋和不雅。

我错过了什么吗?

4

2 回答 2

2

请参阅是否有类似 String#scan 的函数,但返回 MatchDatas 数组?

看起来你最好的选择是使用String#scanand Regexp.last_match

于 2012-07-20T01:26:13.690 回答
0

是的,你错过了一些东西。从 MatchData 文档中:

MatchData 是特殊变量 $~ 的类型,是 Regexp#match 和 Regexp.last_match 返回的对象的类型。它封装了模式匹配的所有结果,通常通过特殊变量 $&、$'、$`、$1、$2 等访问的结果。

重要的部分以粗体显示。

您已经在单个 MatchData 对象中拥有所有匹配项。这不是你想要的吗?

于 2012-07-20T01:26:25.347 回答