来自R的单词Regex的前两个字母

时间:2016-05-19 14:47:45

标签: regex r gsub

我正在尝试从字符串中获取每个单词的第一个上下字母。

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

两个结果是:

"PIC"
"ProgrammationIsCool"

我想得到:

"PrIsCo"

感谢您的帮助

1 个答案:

答案 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大写 - 小写字母)。
  • | - 或
  • . - 任何字符,但换行符