我正在尝试从字符串中获取每个单词的第一个上下字母。
string<-"Programmation _ Is 2 Cool"
gsub("[^A-Z]", "", string)
gsub("[^A-Za-z]", "", string)
两个结果是:
"PIC"
"ProgrammationIsCool"
我想得到:
"PrIsCo"
感谢您的帮助
答案 0 :(得分:4)
如果必须提取第一个大写字母和下一个小写字母,请使用
(\\b[A-Z][a-z])|.
或
(\\b\\p{Lu}\\p{Ll})|.
我们的想法是匹配并捕获第一个大写字母和下面的小写字母,并删除所有其他字母。
gsub("(\\b[A-Z][a-z])|.", "\\1", string, perl=TRUE)
请注意,要删除换行符,您需要将(?s)
预先挂起到模式的开头。
模式详情:
(\\b[A-Z][a-z])
- 第1组匹配
\\b
- 字边界[A-Z][a-z]
- 一个大写的ASCII字母后跟一个小写的ASCII字母(替换为\\p{Lu}\\p{Ll}
以匹配任何Unicode大写 - 小写字母)。|
- 或.
- 任何字符,但换行符