根据模式从字符串创建子字符串,并将模式保留在子字符串中

时间:2018-06-20 11:28:31

标签: r string

是否可以根据与单词匹配但还保留匹配部分的模式从字符串创建子字符串?

a <- "contrainte que ilz ne contraint Que ris et jeux mais ne contrainte que jamais on ne contrainte que vous ne contraindre que de ne contraint que l' amour ne contraint que je ne contrainte que je ne contraint que je ne contrainte que l' homme arrive à ne contraint que nous ne contrainte que je ne contraintes que le créateur ne contrainte que l' opium même ne"

当模式为“ cont”时,我希望拆分字符串。

strsplit(a, "cont", perl = T)

 [1] ""                                 "rainte que ilz ne "               "raint Que ris et jeux mais ne "   "rainte que jamais on ne "        
 [5] "rainte que vous ne "              "raindre que de ne "               "raint que l' amour ne "           "raint que je ne "                
 [9] "rainte que je ne "                "raint que je ne "                 "rainte que l' homme arrive à ne " "raint que nous ne "              
[13] "rainte que je ne "                "raintes que le créateur ne "      "rainte que l' opium même ne" 

我想做的是完全一样的,但是将匹配部分保留在子字符串中。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将stringr::str_splitlookaheads一起使用,例如:

stringr::str_split(a, "(?=cont)")[[1]]

环顾四周是零宽度的断言,这意味着它们不会吃任何字母, 因此在这里:正向搜索的作用是匹配任何内容(?= anyword )匹配任何内容,后跟 anyword

输出:

stringr::str_split(a, "(?=cont)")[[1]]
 [1] ""                                    
 [2] "contrainte que ilz ne "              
 [3] "contraint Que ris et jeux mais ne "  
 [4] "contrainte que jamais on ne "        
 [5] "contrainte que vous ne "             
 [6] "contraindre que de ne "              
 [7] "contraint que l' amour ne "          
 [8] "contraint que je ne "                
 [9] "contrainte que je ne "               
[10] "contraint que je ne "                
[11] "contrainte que l' homme arrive à ne "
[12] "contraint que nous ne "              
[13] "contrainte que je ne "               
[14] "contraintes que le créateur ne "     
[15] "contrainte que l' opium même ne"