R中的正则表达式:字符串末尾字母后的数字范围
regex in R: Number range after letter at end of string
我的列名是这样的:
colnames <- c("a81", "b82", "a181", "b182")
我只想提取末尾有 81 或 82 的列,并且在这些数字(81 和 82)之前应该有一个字母。我想在 grepl
中使用正则表达式,这里的预期输出是
TRUE TRUE FALSE FALSE
到目前为止我尝试的是
grepl("[:alpha:][81-82]$", colnames)
不幸的是,所有条目的代码 returns FALSE
。我做错了什么?
需要将[:alpha:]
改成[[:alpha:]]
而不是[81-82]
,可以是8
后跟[=16=]
grepl("^[[:alpha:]]8[1-2]$", colnames)
#[1] TRUE TRUE FALSE FALSE
或者我们可以指定
grepl("^[A-Za-z]8[1-2]$", colnames)
我会选择
grepl("[a-z](81|82)$", colnames)
[a-z] 表示任何字母,括号将接下来的 2 个字符中的任何一个分组:即 81 或 (|) 82。
我的列名是这样的:
colnames <- c("a81", "b82", "a181", "b182")
我只想提取末尾有 81 或 82 的列,并且在这些数字(81 和 82)之前应该有一个字母。我想在 grepl
中使用正则表达式,这里的预期输出是
TRUE TRUE FALSE FALSE
到目前为止我尝试的是
grepl("[:alpha:][81-82]$", colnames)
不幸的是,所有条目的代码 returns FALSE
。我做错了什么?
需要将[:alpha:]
改成[[:alpha:]]
而不是[81-82]
,可以是8
后跟[=16=]
grepl("^[[:alpha:]]8[1-2]$", colnames)
#[1] TRUE TRUE FALSE FALSE
或者我们可以指定
grepl("^[A-Za-z]8[1-2]$", colnames)
我会选择
grepl("[a-z](81|82)$", colnames)
[a-z] 表示任何字母,括号将接下来的 2 个字符中的任何一个分组:即 81 或 (|) 82。