如何使用regexp-match列出Racket中的所有内容

时间:2016-08-02 03:39:11

标签: racket

如果给我一串数据

"data-symbol='1'
 data-symbol='2'
 data-symbol='3'
 data-symbol='4' "

如何使用regexp-match从字符串中取出数字并将它们放入列表中 '(1 2 3 4),没有必要。另外,对于数字,它们可以是任何它们仅用作示例。

1 个答案:

答案 0 :(得分:4)

您可以使用regexp-match*和捕获群组,string->number从字符串中提取信息:

> (map string->number
       (regexp-match* #px"data-symbol='(\\d+)'"
                      "data-symbol='1'
                       data-symbol='2'
                       data-symbol='3'
                       data-symbol='4'"
                      #:match-select second))
'(1 2 3 4)

regexp-match*函数查找给定字符串中正则表达式的所有匹配项,#:match-select用于选择要在结果中返回的捕获组。然后string->number用于将匹配的每个元素转换为数值。

但请注意:看起来您可能正在尝试使用正则表达式解析HTML,并且就像在此网站that way leads only to madness上所着名的那样。考虑使用Racket的HTML解析库之一。