在特殊字符后首字母大写

Raj*_*jan 10 regex r capitalization uppercase

我想删除多余的空格,如果需要可以添加空格,并使用R将特殊字符后的每个单词的首字母大写

string <- "apple,banana, cat, doll and donkey;     fish,goat"
Run Code Online (Sandbox Code Playgroud)

我希望输出为

Apple, Banana, Cat, Doll and donkey; Fish, Goat
Run Code Online (Sandbox Code Playgroud)

我试过了

gsub("(^.|,.|;.)", "\\U\\1", string, perl=T, useBytes = F)
Run Code Online (Sandbox Code Playgroud)

它没用.请帮忙

Wik*_*żew 6

您可以使用

string <- "apple,banana, cat, doll and donkey;     fish,goat"
trimws(gsub("(^|\\p{P})\\s*(.)", "\\1 \\U\\2", string, perl=T))
## => [1] "Apple, Banana, Cat, Doll and donkey; Fish, Goat"
Run Code Online (Sandbox Code Playgroud)

请参阅此IDEONE演示

PCRE正则表达式匹配:

  • (^|\\p{P}) - (组1)字符串或任何标点符号的开头
  • \\s* - 0个或更多的空白符号
  • (.) - (第2组)任何字符,但换行符

替换:

  • \\1 - 反向引用组1
  • - 在标点符号和下一个字符之间或字符串的开头处插入一个空格
  • \\U\\2 - 将第2组字符变为大写

trimws删除我们使用正则表达式添加的初始空间.