查找以 alpha 开头的字符串,但多个特定字符除外
Find strings start with alpha except multi specific characters
目标是找到除 "H" 或 "G"**
以外以 alpha 开头的第一个和第二个元素
DD <- c("DD2123","QD2123","HC12231","HCEF","GC2123","1232","--",NA)
grepl("^[[:alpha:]][^H|G]",DD)
找到所有以 alpha 开头的,包括 "H" 和 "G"。
我怎样才能做到这一点?
grepl("^D|Q",DD)
不是我需要的,实际数据有其他 alpha 模式。
您可以使用 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
。
作为备选方案。 Wiktors的解决方案更通用和实用。
grepl("^[a-zA-FI-Z][0-9a-zA-Z]+$",DD)
您可以先定义 class 个允许出现的值,然后再定义以下位置。
如果允许其他所有内容,只需使用:
grepl("^[a-zA-FI-Z]",DD)
目标是找到除 "H" 或 "G"**
以外以 alpha 开头的第一个和第二个元素DD <- c("DD2123","QD2123","HC12231","HCEF","GC2123","1232","--",NA)
grepl("^[[:alpha:]][^H|G]",DD)
找到所有以 alpha 开头的,包括 "H" 和 "G"。
我怎样才能做到这一点?
grepl("^D|Q",DD)
不是我需要的,实际数据有其他 alpha 模式。
您可以使用 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
。
作为备选方案。 Wiktors的解决方案更通用和实用。
grepl("^[a-zA-FI-Z][0-9a-zA-Z]+$",DD)
您可以先定义 class 个允许出现的值,然后再定义以下位置。
如果允许其他所有内容,只需使用:
grepl("^[a-zA-FI-Z]",DD)