使用字符串中的模式提取多个匹配项

Extract multiple matches using a pattern from a String

我想使用某种模式从更大的字符串中提取一些子字符串。下面是我的代码:

library(stringr)
str_extract_all("'abcd:3343', sdgshdg374 'rgjrkgj4252:sfsfd', wdwdw'wdwd:364:ssfd', 3434", "[''][a-zA-Z0-9]['']")

基本上,我想匹配像 ['][anything with any length]['] 然后是 ,[space] 这样的模式。因此我期待我应该得到匹配 'abcd:3343' & 'rgjrkgj4252:sfsfd' & 'wdwd:364:ssfd'。请注意,对于上述每种情况,所有子字符串后跟 ,[space]

使用我上面的代码,我找不到匹配项。

能否请您帮助如何为这个问题构建正确的模式匹配?

我们可能还需要添加 :

library(stringr)
str_extract_all("'abcd:3343', sdgshdg374 'rgjrkgj4252:sfsfd', 
       wdwdw'wdwd:364:ssfd', 3434", "'[A-Za-z0-9:# ]+'")[[1]]

-输出

[1] "'abcd:3343'"         "'rgjrkgj4252:sfsfd'" "'wdwd:364:ssfd'"    

或者也可以匹配 ' 后跟一个或多个不是 ' ([^']+) 的字符和 '

str_extract_all("'abcd:3343', sdgshdg374 'rgjrkgj4252:sfsfd', 
       wdwdw'wdwd:364:ssfd', 3434", "'[^']+'")[[1]]
[1] "'abcd:3343'"         "'rgjrkgj4252:sfsfd'" "'wdwd:364:ssfd'"