将RegEx与所有特殊字符匹配

因此,我寻找了一种方法来使正则表达式匹配" title="正则表达式匹配">正则表达式匹配字符串" title="正则表达式匹配字符串">正则表达式匹配字符串中的所有特殊字符,但是,我一直无法实现我的高贵企业。将RegEx与所有特殊字符匹配

我试图找到所有需要反斜杠的字符,但有时它是一个反斜杠,有时是两个,其他四个。 我也遇到过R包,它们都有正确的正则表达式,所以你输入“BACKSLASH”,它使它成为正确的方式,但我不知道所有字符的实际英文名称I想要删除。我也看到了str_replace_all(x, "[[:punct:]]", " "),但我不确定它是否像我需要的那样工作。

据我所知,这是一个非常基本的(甚至是愚蠢的)问题,尤其是对谁知道正则表达式的人,但我会很感激,如果你能有一个答案回答。为了长话短说我有一个变量DirtyChars = c(',','。',';','?','/','','`','[','','','','','' '''','''',':','>','<','|',' - ','_','=','+','(',')','^' ','{','}','〜','\'','*','&','%','$','!','@','#')以及我(DirtyChars,sep =“|”)或粘贴(“[”,implode(DirtyChars,sep =“|”)),然后将这些正则表达式转换成一个正则表达式, “]” 09月=“”)只有一个,实际工作,因为这些不

回答:

您可以动态地构建一个字符类出这个特征向量,并用它来以后匹配字符:

DirtyChars = c(',', '.', ';', '?', '/', '\\', '`', '[', ']', '"', ':', '>', '<', '|', '-', '_', '=', '+', '(', ')', '^', '{', '}', '~', '\'', '*', '&', '%', '$', '!', '@', '#') 

s <- "#w$o;r&d^$"

escape_for_char_class <- function(s) {gsub("([]^\\\\-])", "\\\\\\1", s)}

pattern <- paste0("[", escape_for_char_class(paste(DirtyChars, collapse="")), "]")

## [1] "[,.;?/\\\\`[\\]\":><|\\-_=+()\\^{}~'*&%[email protected]#]"

gsub(pattern, "", s, perl=TRUE)

## [1] "word"

查看R demo。

escape_for_char_class函数转义必须在字符类中的正则表达式PCRE可以躲过^\-]字符。然后,该模式使用[...]构建,它们构成一个与类中定义的任何字符相匹配的字符类。最后一行gsub必须perl=TRUE的模式是PCRE兼容使用,TRE正则表达式不支持该模式的转义字符。

以上是 将RegEx与所有特殊字符匹配 的全部内容, 来源链接: utcz.com/qa/258158.html

回到顶部