【问题标题】:split strings by pattern without deleting pattern strings按模式拆分字符串而不删除模式字符串
【发布时间】:2022-07-12 22:31:04
【问题描述】:

对于以“pr”开头并带有多个“r”的模式,例如pr, prr, pr...r.,我想拆分非模式字符串和所有模式字符串,而不删除模式。 strsplit() 完成了这项工作,但删除了所有 pr..r。但是,stringr::str_extract_all 提取了模式字符串,但非模式字符串消失了。

有没有一种方法可以简单地保留所有字符串,但要挑选出带图案的字符串?

x<-c("zprzzzprrrrrzpzr")

"z" "pr" "zzz" "prrrrr" "zpzr" # desired output; keep original charater order

【问题讨论】:

    标签: r string


    【解决方案1】:

    这有点老套,但您可以做一个替换,用一些分隔符分隔出您想要的值,然后在该分隔符上拆分。例如

    unlist(strsplit(gsub("(pr+)","~\\1~", x), "~"))
    # [1] "z"      "pr"     "zzz"    "prrrrr" "zpzr" 
    

    如果您的字符串中没有“~”,这将正常工作。

    【讨论】: