为正则表达式创建预定义集。 (gsub,grepl,...)

creating a pre-defined set for reg-exp. (gsub, grepl,...)

您好,我正在尝试创建一个特殊的字符串,就像在 grepl (R) 中的 digit 一样。

string <- c("a>-787", "ahigji<=!5")

说,

 special_characters <- c(">-!", "<=!")

现在我想看看字符串中是否有带有 special characters 的条目。

  grepl("special_characters", string) 

我也试过了grepl("[special_characters]", string) , grepl("[[:special_characters:]]", string)

但它给了我一个无关紧要的答案!关于测试不同的字符串。

我只想使用类似 [[:digit]] 的东西-简而言之,我需要创建一个预定义集,我需要在 grepl or gsub

中使用它

据我所知,您不能创建[:digit:][:space:][:alnum:][:punct:], 等等...因为它们内置于内部正则表达式引擎中;它们不特定于 greplregexp 等函数,也不是由 R 控制的。

然而,做这样的事情会让你得到本质上相同的行为:

special_chars <- "[>\-\!<\=]"
string <- c("a>-787", "ahigji<=!5")
##
R> grepl(special_chars, string)
#[1] TRUE TRUE

试试这个

special_characters <- c(">-!", "<=!")
spchars <- paste(special_characters, collapse='|')
grepl(spchars, string)

它的工作原理是使用 |,又名 "or" 检查您放入 special_characters 中的任何字符串。它们甚至可以是正则表达式!