R中单词Regex的前两个字母

R中单词Regex的前两个字母,regex,r,gsub,Regex,R,Gsub,我试图从字符串中获取每个单词的第一个上下字母 string<-"Programmation _ Is 2 Cool" gsub("[^A-Z]", "", string) gsub("[^A-Za-z]", "", string) 我想得到: "PrIsCo" 感谢您的帮助如果必须提取第一个大写字母和下一个小写字母,请使用 (\\b[A-Z][a-z])|. 或 其思想是匹配并捕获第一个大写字母和下面的小写字母,并删除所有其余字母 gsub("(\\b[A-Z][a-z])|.",

我试图从字符串中获取每个单词的第一个上下字母

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

"PrIsCo"

感谢您的帮助

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

(\\b[A-Z][a-z])|.

其思想是匹配并捕获第一个大写字母和下面的小写字母,并删除所有其余字母

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

我重新阅读了这个问题,现在认为真正的正则表达式应该是
(\\b[A-Z][A-Z]?)。
(或者
(\\b\\p{Lu}\\p{Ll}?)。
)我编辑了答案。请注意,只有在
[a-z]
(或
\\p{Ll}
)后面加一个
,才算是1个字母的单词。很抱歉经常出现错误。但是,这个问题不能解释为第一个大写字母和第一个小写字母,它们可以在字符串中的任何位置,而不仅仅是在开头(只是一个想法)@rock321987:No,我正试着从一个单词中找出每个单词的第一个上下字母string@WiktorStribi是的,也许我想得太多了
(\\b\\p{Lu}\\p{Ll})|.
gsub("(\\b[A-Z][a-z])|.", "\\1", string, perl=TRUE)