如何同时使用ignore.case和endsWith?
这是我的数据框架:如何同时使用ignore.case和endsWith?,r,regex,R,Regex,这是我的数据框架: df您可以将(?i)c$(基本R正则表达式函数中的默认正则表达式库)正则表达式与grepl一起使用: df <- data.frame(a = c(1,2,3), b = c("aC", "ab", "ac"), stringsAsFactors = F) df[grepl("(?i)c$", df$b),] # a b #1 1 aC #3 3 ac (?i)c$表示: (?i)-忽略.大小写内联修饰符标志 c-文字字符 $-字符串结束标记 所以您只想保留b列
df您可以将(?i)c$
(基本R正则表达式函数中的默认正则表达式库)正则表达式与grepl
一起使用:
df <- data.frame(a = c(1,2,3), b = c("aC", "ab", "ac"), stringsAsFactors = F)
df[grepl("(?i)c$", df$b),]
# a b
#1 1 aC
#3 3 ac
(?i)c$
表示:
(?i)
-忽略.大小写
内联修饰符标志
c
-文字字符
$
-字符串结束标记
所以您只想保留b
列的元素以c结尾的行?df[grepl(.*c$”,df$b,ignore.case=TRUE),]
@Gainz没错。@deepseefan然后d.b的注释就是您必须做的事情!我会自己使用df[grepl(“ac”,df[[“b”]])| grepl(“ac”,df[[“b”]]),]
。@Gainz,但如果可能的话,我正在寻找一种使用endsWidth
的解决方案。我怎么可能没有想到tolower(df$b)
或touper(df$b)
。这正是我所需要的。谢谢你@d.b
df <- data.frame(a = c(1,2,3), b = c("aC", "ab", "ac"), stringsAsFactors = F)
df[grepl("(?i)c$", df$b),]
# a b
#1 1 aC
#3 3 ac
regex.escape <- function(string) {
gsub("([][{}()+*^$|\\\\?.])", "\\\\\\1", string)
}
vals <- c("C.", "c)", "c(")
rx <- paste0("(?i)(?:", paste(regex.escape(vals), collapse="|"), ")$") # => "(?i)(?:C\\.|c\\)|c\\()$"
df <- data.frame(a = c(1,2,3,4), b = c("C.", "c)", "c(", "c"), stringsAsFactors = F)
df[grepl(rx, df$b),]
# a b
# 1 1 C.
# 2 2 c)
# 3 3 c(