我有一个看起来像这样的字符串:
problem <- c("GROUP 1", "GROUP 1 & GROUP 2", "GROUP 1 & GROUP 2 & GROUP 3", "GROUP 1 & GROUP 2 & GROUP 3 & GROUP 4")
Run Code Online (Sandbox Code Playgroud)
每组之间有“&”。当存在多个“&”时,我想使用 R(或者包sub()中的某些东西)将每个“&”替换为“,”。stringr但是,我不想改变最后的“&”。我该怎么做,它看起来像:
#Note: Only the 3rd and 4th strings should be changed
solution <- c("GROUP 1", "GROUP 1 & GROUP 2", "GROUP 1, GROUP 2 & GROUP 3", "GROUP 1, GROUP 2, GROUP 3 & GROUP 4")
Run Code Online (Sandbox Code Playgroud)
在实际的字符串中,可能有无限数量的“&”,所以如果可能的话,我不想硬编码限制。
我们可以将正则表达式与前瞻断言Regex Lookahead、Lookbehind 和atomic groups结合使用。
library(stringr)
str_replace_all(problem, " &(?=.*?&)", ", ")
Run Code Online (Sandbox Code Playgroud)
输出:
[1] "GROUP 1"
[2] "GROUP 1 & GROUP 2"
[3] "GROUP 1, GROUP 2 & GROUP 3"
[4] "GROUP 1, GROUP 2, GROUP 3 & GROUP 4"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |