作为我之前帖子(Return number from string)的扩展,我试图从字符串中提取字母和数字。但是为了使问题复杂化,模式可能不止一次发生。例如,给定此字符串:
string <- "[{\"task\":\"T0\",\"value\":[{\"choice\":\"MPL\",\"answers\":{\"HWMN\":\"1\",\"WHCHSDFTHNMLSVSBL\":\"LFTSD\"},\"filters\":{}},{\"choice\":\"NL\",\"answers\":{\"HWMN\":\"1\",\"WHCHSDFTHNMLSVSBL\":\"LFTSD\"},\"filters\":{\"LKSLK\":\"NTLP\",\"PTTRN\":\"STRPS\"}}]}]"
我想提取MPL(你会看到它出现在 choice \&#34;:\&#34; )之后,以及1(你&# 39; ll看到它发生在 HWMN \&#34;:\&#34; )和LFTSD之后(发生在 WHCHSDFTHNMLSVSBL \&#34;:\&#34; < /强>)。
我设法使用以下方式单独提取此信息:
sub(".*?choice\":\"(.*?)\",\"answers.*", "\\1", string)
sub(".*?HWMN\":\"(.*?)\",\"WHCHSDFTHNMLSVSBL.*", "\\1", string)
sub(".*?WHCHSDFTHNMLSVSBL\":\"(.*?)\"},\"filters.*", "\\1", string)
但是,这仅适用于第一次出现。如何搜索字符串并将所有匹配项返回到列表。因此,上面的示例将生成一个列表2.类似于:
> output.list
[[1]]
[1] "MPL"
[2] "1"
[3] "LFTSD"
[[2]]
[1] "NL"
[2] "1"
[3] "LFTSD"
想法?