匹配包含小写和大写字母的单词

时间:2018-03-14 15:31:54

标签: r regex

匹配首字母缩略词包含大小写字母(至少一个较低的大写字母,如reKHS)或R中的长度为3或更多(CASE,CAT)的大写字母缩略词,应该匹配reKHS和CASE。这个正则表达式处理后一种情况(匹配长度为3或更长的首字母缩略词)regex <- "\\b^[a-zA-Z]*${3,10}\\b";。需要找到一种方法将它与包含小写和大写的正则表达式结合起来。

2 个答案:

答案 0 :(得分:1)

正面前瞻或两个应该解决这个问题

(.*(?=.*[a-z])(?=.*[A-Z]).*)|([A-Z]{3,})

解释:

Either contain a lower and upper case character somewhere 
    (.*(?=.*[a-z])(?=.*[A-Z]).*)
or
    |
have at least 3 upper case characters
    ([A-Z]{3,})

答案 1 :(得分:0)

您可以使用类似TRE的模式

regex <- "\\b(?:[[:upper:]]{3,10}|(?:[[:lower:]]+[[:upper:]]|[[:upper:]][[:lower:]]*[[:upper:]])[[:alpha:]]*)\\b"

或PCRE正则表达式(与基本R函数中的perl=TRUE一起使用):

regex <- "\\b(?:\\p{Lu}{3,10}|(?:\\p{Ll}+\\p{Lu}|\\p{Lu}\\p{Ll}*\\p{Lu})\\p{L}*)\\b"

请参见regex demo(和PCRE regex demo)。

详细信息

  • \\b-单词边界
  • (?:-
    • [[:upper:]]{3,10}-3至10个大写字母
  • |-或
    • (?:-
      • [[:lower:]]+[[:upper:]]-1个或多个小写字母和1个大写字母
    • |-或
      • [[:upper:]][[:lower:]]*[[:upper:]]-大写字母,然后是0+小写字母,然后是大写字母
    • )-分组结束
    • [[:alpha:]]*-0个字母以上
  • )-交替组的结尾
  • \\b-单词边界。