我想这将是一个愚蠢的错误,但对我来说,以下返回一个只包含“M”的数组。看到这个:Ruby正则表达式,只有一个捕获(非常简单!)
/(.)+?/.match("Many many characters!").captures
=> ["M"]
为什么不返回每个字符的数组?我一定错过了明显的东西,因为我看不出这有什么问题?
编辑:刚才意识到,我不需要+?但如果没有它,它仍然不起作用。
编辑:道歉!我将阐明:我的目标是允许用户输入正则表达式和样式以及输入文本文件,只要有匹配,文本将被一个html元素包围,样式将被应用,我不只是将字符串转换成字符,我只使用给定的正则表达式,因为它是最简单的,尽管这是我的愚蠢。如何从scan()获取捕获组或者不可能?我看到$ 1包含“!” (最后一场比赛?),而不是其他人。
编辑:天哪,这真的不是我的一天。正如injekt告诉我的那样,捕获被存储在单独的数组中。我如何从原始字符串中获取这些捕获的偏移量?我希望能够获得捕获的偏移量,然后用另一个字符串包围它。或者,这是什么gsub? (我以为只有更换了比赛,不是一个捕获组)
希望最终编辑:权,让我重新开始这个:P
所以,我有一个字符串。用户将使用配置文件输入正则表达式,然后使用与每个捕获组关联的样式。我需要能够扫描整个字符串并获取每个组匹配的开始和结束或偏移量和大小。
因此,如果用户已经配置了([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})
(电子邮件地址),那么我应该能够得到:
[ ["elliotpotts", 0, 11],
["sample.", 12, 7],
["com", 19, 3] ]
从字符串: “[email protected]”
如果不是很明显,我只是有些问题:P。非常感谢你们,感谢你的耐心等待!
我刚刚看到你的编辑,扫描的捕获组存储在单独的数组中,只是尝试你的正则表达式和在irb中的测试字符串,你会看到。答案仍然与您的编辑相同 –
刚看到您的下一次编辑,您将不得不更新更多的信息。我现在有点困惑:P随时抛出一个更完整的例子,无论它是如何做作,所以我们确切地知道你需要提取什么 –
好吧,用你最新的编辑更新我的答案。我现在有点时间了,所以这只是完整的解决方案,没有解释,让我知道如果它没有意义,我会更新它 –