R正则表达式问题:“-\\s[A-Z]”将匹配的大写字母小写,并删除破折号+空格

R正则表达式问题:“-\\s[A-Z]”将匹配的大写字母小写,并删除破折号+空格,r,regex,replace,match,R,Regex,Replace,Match,假设您有一个字符串:Stack-Overflow 我想将前面有破折号和空格的大写字符小写,并删除破折号和空格 到目前为止,我能够使用正则表达式匹配模式。但是,如果不手动操作,如何将该字符小写 c("Stack- Overflow") %>% str_replace_all("-\\s[A-Z]", "o") 非常感谢。您可以将gsub与perl=TRUE一起使用,如下所示: c("Stack- Overflow") %>% gsub(pattern="-\\s+([A-Z])",

假设您有一个字符串:Stack-Overflow

我想将前面有破折号和空格的大写字符小写,并删除破折号和空格

到目前为止,我能够使用正则表达式匹配模式。但是,如果不手动操作,如何将该字符小写

c("Stack- Overflow") %>% str_replace_all("-\\s[A-Z]", "o")
非常感谢。

您可以将gsub与perl=TRUE一起使用,如下所示:

c("Stack- Overflow") %>% gsub(pattern="-\\s+([A-Z])", replacement="\\L\\1", perl=TRUE)
[1] "Stackoverflow"
细节

--匹配连字符 \\s+-1个或多个空格 [A-Z]-捕获组1:任何ASCII大写字母
\\L是一个小写运算符,它将所有文本向右转换为小写,直到在此处遇到\\E运算符,因为整个替换文本必须转换为小写,所以省略它。

如果有一天您是我的英雄。非常感谢仅供参考:要匹配任何大写字母,请使用gsubpattern=-\\s\\p{Lu},replacement=\\L\\1,perl=TRUE