在许多其他编程语言中,有一个函数,它以正则表达式作为参数,并返回字符串值的数组。这适用于Javascript和Ruby。然而,在Crystal中,
例如,以下代码:
.match
似乎不接受全局标志,并且它不返回数组,而是返回类型为Regex :: MatchData
的结构体。(https://crystal-lang.org/api/0.25.1/Regex/MatchData.html)例如,以下代码:
str = "Happy days"
re = /[a-z]+/i
matches = str.match(re)
puts matches
返回 Regex::MatchData("Happy")
我不确定如何将此结果转换为字符串,也不知道为什么这不是默认值,因为在灵感语言(Ruby)中是这样的。我理解这个问题可能是由于我处理结构体和编译语言的经验不足造成的,但我希望得到答案,以便帮助其他来自JS/Ruby背景的人。
matches.string
,但是使用scan
,你将会得到所有匹配。 - Wiktor Stribiżew