【问题标题】:How find only directory in string with gsub (or regex) R如何使用gsub(或正则表达式)R在字符串中仅查找目录
【发布时间】:2016-11-10 15:35:37
【问题描述】:

我正在尝试从 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,我会使用它,但它不太安全。此外,我认为它会在正则表达式中抱怨,因为 R 会将反斜杠解释为转义字符。

所以“额外的问题”是,如何找到并解决这个问题:

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

【问题讨论】:

  • :-_ 是从:_ 的范围,如果不是这样,请将- 移动到字符类的末尾
  • 那么您是在尝试从字符串中提取目录路径吗?
  • 嗯,是的,但是目录路径是一个字符串,所以或多或少我只是想从txt文件中复制带有目录路径的字符串...
  • 这个正则表达式 (C:\/.*?[^\s]\/)(\s|$)Regex101 中运行良好,但由于某种原因它在 R 中不起作用。
  • 也许如果我添加一些额外的反斜杠,我会尝试一下。谢谢!

标签: regex r directory gsub


【解决方案1】:

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

我认为我的主要问题在于 gsub 功能。它现在可以使用:

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

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

另外,我尝试使用带有反斜杠“\”的路径,它可以工作。

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

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多