目标是查找以字母开头的第一和第二元素(“ H”或“ G”除外)**
DD <- c("DD2123","QD2123","HC12231","HCEF","GC2123","1232","--",NA)
grepl("^[[:alpha:]][^H|G]",DD)
找到所有以“ H”和“ G”开头的字母。
我该如何实现?
grepl("^D|Q",DD)
不是我所需要的,实际数据还具有其他alpha模式。
答案 0 :(得分:4)
您可以使用PCRE正则表达式,例如^(?![HG])\p{L}
或^(?![HG])[[:alpha:]]
:
> DD <- c("DD2123","QD2123","HC12231","HCEF","GC2123","1232","--",NA)
> grepl("^(?![HG])\\p{L}",DD, perl=TRUE)
[1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
或^[^\\P{L}HG]
:
> grepl("^[^\\P{L}HG]",DD, perl=TRUE)
[1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
^(?![HG])[[:alpha:]]
模式匹配
^
-字符串的开头(?![HG])
-当前位置右侧不允许有H
或G
[[:alpha:]]
或\p{L}
-一个字母。 ^[^\P{L}HG]
匹配字符串(^
)的开头,然后匹配非字母H
和G
以外的任何字符。
答案 1 :(得分:3)
作为替代。 Wiktors解决方案更加通用和实用。
grepl("^[a-zA-FI-Z][0-9a-zA-Z]+$",DD)
您可以定义一类允许首先出现的值,然后定义以下位置。
如果允许其他所有内容,只需使用:
grepl("^[a-zA-FI-Z]",DD)