提取在字符串中多次出现的模式

时间:2016-12-13 17:28:00

标签: r regex

作为我之前帖子(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"

想法?

0 个答案:

没有答案