有人指定我{2}
时为什么有人解释为什么显示“ aba12”?
strings=c("Ab12","aba12","BA12","A 12b","B!","d", " ab")
grep("^[[:alpha:]]{2}", strings, value=TRUE)
答案 0 :(得分:3)
您可以使用...
grep("^[[:alpha:]]{2}[^[:alpha:]]", strings, value=TRUE)
# [1] "Ab12" "BA12"
[...]
枚举接受的字符,而[^...]
取反。此外,来自@ Mako212:
^[[:alpha:]]{2}
[...]告诉Regex引擎匹配字符串的开头,然后匹配两个ASCII A-Z / a-z字符。它不声明字符串的其余部分。正则表达式将处理字符串的其余部分,但是没有匹配的剩余条件
我在上面的答案期望在前两个字符后出现非字母字符。从MrFlick的评论中:
如果您还想匹配“ AB”,请使用
grep("^[[:alpha:]]{2}([^[:alpha:]]|$)", strings, value=TRUE)
匹配非字母字符或字符串结尾。