我的文字包含相互粘贴的字词,幸运的是,粘贴的字词大多以大写字母开头。
我想要匹配的字符串将包含至少一个包含至少一个小写字符的单词和至少一个不是第一个大写字符的大写字符。
请参阅下文,了解我应处理的各种情况。
my_corpus <- c("PleaseMatch this",
"And alsoThis",
"this ASWell",
"thisTOO",
"Though NOT THIS",
"Nor This")
rgx <- "..." # please help me here
grep(rgx ,my_corpus) # 1 2 3 4
答案 0 :(得分:1)
您可以考虑以下解决方案:
[[:lower:]][[:upper:]]|\B[[:upper:]][[:lower:]]
请参阅this regex demo。
或者,如果Foo_Bar
不匹配(请注意\B
非字边界将匹配_
后的大写字母):
[[:lower:]][[:upper:]]|[[:alnum:]][[:upper:]][[:lower:]]
请参阅this demo。
或者,还要处理a1A
案例:
[[:lower:]][[:upper:]]|[[:alnum:]][[:upper:]][[:lower:]]|[0-9][[:upper:]]\b
请参阅regex demo。
<强>详情:
[[:lower:]]
- 匹配小写字母[[:upper:]]
- 匹配大写字母|
- 一个交替运算符(将一个组中的备选项分开)[[:alnum:]]
- 匹配字母数字字符[0-9]
- 匹配任何ASCII数字(您也可以使用[[:digit:]]
)\b
- 字边界\B
- 非字边界。