Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用gsub删除字符串中任意字符前后的特定字符_R_Regex_Gsub - Fatal编程技术网

R 如何使用gsub删除字符串中任意字符前后的特定字符

R 如何使用gsub删除字符串中任意字符前后的特定字符,r,regex,gsub,R,Regex,Gsub,我正在尝试使用gsub从以下字符串中删除字符: string <- "function(data, x = !!rlang::sym(\"Time1\"), y = !!rlang::sym(\"YVAR\")), values = c(\"a\", \"b\"))" 也就是说,我想删除!!rlang::sym(\“,保留Time1,并删除Time1\”后的结束引号和括号)(我还想删除YV

我正在尝试使用gsub从以下字符串中删除字符:

string <- "function(data, x = !!rlang::sym(\"Time1\"), y = !!rlang::sym(\"YVAR\")), values = c(\"a\", \"b\"))"
也就是说,我想删除
!!rlang::sym(\“
,保留
Time1
,并删除Time1
\”后的结束引号和括号)
(我还想删除
YVAR
的此项)

Time1
YVAR
(x和y变量名)是任意的,可以在结果字符串中命名任何内容,但是,字符
!!需要保留的任意字符串后面的rlang::sym(\“
和结束引号和括号
\”)
是常量,不会更改

我明白我可以简单地使用

result <- gsub("!!rlang::sym(\"", "", string, fixed = TRUE)

result如果它始终是文本
!!rlang::sym(“
),那么这个

cat(gsub('!!rlang::sym\\(“(\\S+”\\)”,“\\1”,字符串),“\n”)
#函数(数据,x=Time1,y=YVAR),值=c(“a”,“b”))
如果它是一个函数调用/paren/quote,那么它可以被概括一点。我认为您需要一些特殊性,因为否则您将解析出比您想要的多得多的内容。我假设需要
rlang

gsub('\\S+rlang\\S+\\(“(\\S+)”\\),“\\1”,字符串)

请注意,在您的示例
字符串
!!rlang::sym(\“YVAR\”)
中有两个正确的参数,它们稍微阻碍了模式。如果这是真的,那么…请使用
“\\)+
或。。。另外。

您可以使用一个模式和一个捕获组,该捕获组将匹配除
以外的任何字符,并在替换中使用组1

!!rlang::sym\("([^"]+)"\)

使用

result使用
gsub('!!rlang::sym\\(“(.*?”\\),“\\1”,result)
 result <- gsub("\")", "", result, fixed = TRUE)
!!rlang::sym\("([^"]+)"\)
string <- "function(data, x = !!rlang::sym(\"Time1\"), y = !!rlang::sym(\"YVAR\")), values = c(\"a\", \"b\"))"
cat(gsub('!!rlang::sym\\("([^"]+)"\\)', "\\1", string))
function(data, x = Time1, y = YVAR), values = c("a", "b"))