如何使用 gsub(或正则表达式)R 在字符串中仅查找目录

How find only directory in string with gsub (or regex) R

我正在尝试从 txt 文件中读取目录。在 txt 文件中,语法如下:

dirScript;"C:/User/Folder_1/R/Script-Folder 1/"
"empty line"

我想要的信息是让 var 等于一个字符串,目录如下:

var <- "C:/User/Folder_1/R/Script-Folder 1/"
setwd(var)

我的 R 代码如下所示:

tempString           <- str_c(str_extract_all(textInTxtFile, regex("(?<=;).*"), simplify=TRUE), sep="", collapse="") 

# Real variable, gsub expression deletes extra backslashes added by functions above
var                  <- gsub("[^A-Za-z0-9/.:-_; ]", "", tempString)
# Tempstring: "\""C:/User/Folder 1/R/Script-Folder 1/"\""
# Var: "C:/User/Folder 1/R/ScriptFolder 1/"

# *UPDATE* Or like this, seems to work, Safe enough?
var                  <- gsub('"', "", tempString)

所以我的“-”和“_”都消失了。我不明白为什么,我认为我的正则表达式应该在分号“;”之后搜索任何内容,这是错误的吗?也许我不应该使用 str_c ? (但这有什么不同吗?)

另外,我该如何修复我的 gsub,使其不带走“-”和(?)“_”?或者如何修复我的正则表达式以便 gsub 不是必需的,我的正则表达式或那里的其他函数添加了一些反斜杠和引文符号。

最后,在我找到正确的目录后,有没有办法检查我的目录?

这是个好主意吗?

dir.create(file.path(mainDir, subDir), showWarnings = FALSE)
setwd(file.path(mainDir, subDir))

来自:Check existence of directory and create if doesn't exist

附加问题: 如果方向是用反斜杠写的(windows 标准),有没有一种方法可以轻松找到,如果是这样,我只使用 gsub("[\]", "/", text)。我正在考虑只搜索一些反斜杠,如果它大于说 3 我使用它,但它不太安全。 Aslo 它会在我认为的正则表达式中抱怨,因为 R 会将反斜杠解释为转义字符。

所以 "extra question" 是,如何找到并修复它到一个好的路径:

dirScript;"C:\User\Folder_1\R\Script-Folder 1\"
"empty line"

我修好了。感谢我收到的帮助。

我认为我的主要问题出在 gsub 函数中。它现在适用于此:

var                  <- gsub('"', "", tempString)

还有我的带有 str_c 的正则表达式,所有这些都可能会添加一些奇怪的东西,给我一个额外的字符串,但那被新的 gsub 删除了。

此外,我尝试使用带有反斜杠“\”的路径,它有效。

我不知道是否留下这个问题,也许不?评论你的想法。

感谢您的帮助。