R角色类

时间:2018-09-05 21:01:20

标签: r regex

有人指定我{2}时为什么有人解释为什么显示“ aba12”?

strings=c("Ab12","aba12","BA12","A 12b","B!","d", "  ab")

grep("^[[:alpha:]]{2}", strings, value=TRUE)

1 个答案:

答案 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) 
     

匹配非字母字符或字符串结尾。