R中单词正则表达式的前两个字母

First two letters from words Regex in R

我正在尝试从字符串中获取每个单词的第一个大写字母和小写字母。

string<-"Programmation _ Is 2 Cool"
gsub("[^A-Z]", "", string)
gsub("[^A-Za-z]", "", string)

两个结果是:

"PIC"
"ProgrammationIsCool"

我想得到:

"PrIsCo"

感谢帮助

如果必须提取第一个大写字母和接下来的小写字母,请使用

(\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 大小写字母)。
  • | - 或
  • . - 除换行符外的任何字符