仅当 R 中不存在时,才在字符串中的逗号后添加空格

dee*_*esh 2 regex string r gsub

例如我有

a=c("Jack and Jill,went up the, hill,to,fetch a pail,of, water")
Run Code Online (Sandbox Code Playgroud)

我试图做的是在逗号后添加空格,当且仅当逗号后跟一个字母表,这样我的输出看起来像这样

 "Jack and Jill, went up the, hill, to, fetch a pail, of, water"
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的

gsub("/,(?![ ])/, ", " ",a)
Run Code Online (Sandbox Code Playgroud)

但没有给我想要的结果。任何帮助将非常感激。谢谢

akr*_*run 5

我们可以使用gsub逗号 ( ,) 后跟任何([A-Za-z])作为组捕获的字母 ( )进行匹配,然后将其替换为,后跟一个空格和该捕获组的反向引用 ( \\1)

gsub(",([A-Za-z])", ", \\1", a)
#[1] "Jack and Jill, went up the, hill, to, fetch a pail, of, water"
Run Code Online (Sandbox Code Playgroud)

或使用 [[:alpha:]]

gsub(",([[:alpha:]])", ", \\1", a)
#[1] "Jack and Jill, went up the, hill, to, fetch a pail, of, water"
Run Code Online (Sandbox Code Playgroud)

  • `[Az]` 是一个误导性的字符类。人们认为它只匹配字母,但 [事实并非如此](http://stackoverflow.com/a/29771926/3832970)。 (2认同)