正则表达式与命名捕获组获得所有匹配的Ruby

我有一个字符串:
s="123--abc,123--abc,123--abc"

我试着使用Ruby 1.9的新功能“命名组”来获取所有命名组信息:

/(?<number>\d*)--(?<chars>\s*)/

有没有像Python的findall一样返回一个matchdata集合的API?在这种情况下,我需要返回两个匹配,因为123和abc重复两次。每个匹配数据包含每个命名的捕获信息的细节,因此我可以使用m [‘number’]获得匹配值。

命名捕获仅适用于一个匹配结果。
ruby的findall的模拟是 String#scan.你可以使用扫描结果作为数组,或传递一个块到它:
irb> s = "123--abc,123--abc"
=> "123--abc,123--abc"

irb> s.scan(/(\d*)--([a-z]*)/)
=> [["123","abc"],["123","abc"]]

irb> s.scan(/(\d*)--([a-z]*)/) do |number,chars|
irb*     p [number,chars]
irb> end
["123","abc"]
["123","abc"]
=> "123--abc,123--abc"

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...