我的str
值包含相当数量的文本,我将其与正则表达式进行匹配。 str
包含正则表达式的多个匹配项,但当然我只得到第一个。
如何更好地列举其他匹配,如何将它们收集到list[str]
?
例如:
str text = "hello here how home";
现在我能做到:
if (/<match:h+>/ := text) println(match);
打印第一个匹配项:hello
。
现在,相反,我喜欢将所有比赛收集到list[str]
。其他语言为全局匹配提供g
标志。 Rascal的成语是什么?
答案 0 :(得分:3)
通常,您可以迭代一个模式,直到没有新的匹配为止。
for (/<match:h+>/ := "hello here how home") {
println(h);
}
或
[ h | /<match:h+>/ := "hello here how home"]
如果你想知道列表中是否至少有一个项目,反之亦然:
if (_ <- lst) {
println("lst is not empty");
}
详细了解导师中的Pattern Matching和Enumerators。
如果您想匹配单词,则可能需要更改正则表达式:/<word:h\w+>/