Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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-使用正则表达式查找/替换换行符_R_Regex - Fatal编程技术网

R-使用正则表达式查找/替换换行符

R-使用正则表达式查找/替换换行符,r,regex,R,Regex,我正在尝试使用正则表达式清理文件夹中的一堆.txt文件。我似乎无法让R找到换行符 gsub_dir(dir = "folder_name", pattern = "\\n", replacement = "#") 这是我正在使用的代码。它适用于字符替换,但不适用于换行 gsub_dir(dir = "folder_name", pattern = "\\n", replacement = "#") 我还尝试了\r和各种其他排列。使用纯文本编辑器,我可以用\n查找所有换行符。使用xfun::g

我正在尝试使用正则表达式清理文件夹中的一堆.txt文件。我似乎无法让R找到换行符

gsub_dir(dir = "folder_name", pattern = "\\n", replacement = "#")
这是我正在使用的代码。它适用于字符替换,但不适用于换行

gsub_dir(dir = "folder_name", pattern = "\\n", replacement = "#")

我还尝试了\r和各种其他排列。使用纯文本编辑器,我可以用\n查找所有换行符。

使用
xfun::gsub\u dir
无法这样做

请看一下:

  • 使用基本上执行
    x=readLines(con,encoding='UTF-8',warn=FALSE)
    read\u utf8
    读入文件
  • 然后,
    gsub
    被输入这些行,当所有替换完成时
  • 将行连接在一起。。。用左前,换行,符号
为此,您需要使用一些自定义函数,这里有一个“快速脏”函数,它将用
#
替换所有LF符号:


这将删除仅跟在数字行后面的行。

使用
xfun::gsub\u dir
无法执行此操作

请看一下:

  • 使用基本上执行
    x=readLines(con,encoding='UTF-8',warn=FALSE)
    read\u utf8
    读入文件
  • 然后,
    gsub
    被输入这些行,当所有替换完成时
  • 将行连接在一起。。。用左前,换行,符号
为此,您需要使用一些自定义函数,这里有一个“快速脏”函数,它将用
#
替换所有LF符号:


这将删除只跟在数字行后面的行。

实际上,我认为您需要
“\\\n”
,但很难测试。可能是这样(我没有使用
cat
test
fortunes::fortune(365)
如果有疑问,请不断添加斜杠,直到它起作用。如果使用
fixed=TRUE
参数,也可能会看到显著的速度提高。实际上,您并不需要正则表达式,您只需要查找精确的匹配项。
“\\\n”
不起作用;你是对的,在这个例子中我不需要正则表达式,但我确实需要正则表达式+换行符。事实上,我认为你需要
“\\\n”
,但它很难测试。可能像这样(我没有使用
cat
test
fortunes::fortune(365)
如果有疑问,请不断添加斜杠,直到它起作用。如果使用
fixed=TRUE
参数,也可能会看到显著的速度提高。实际上,您并不需要正则表达式,您只需要查找精确的匹配项。
“\\\n”
不起作用;你是对的,在这个例子中我不需要正则表达式,但我确实需要在这个项目中使用正则表达式+换行符。我仍然无法解决我更广泛的问题,那就是如何在文本文件文件夹上使用包含换行符的正则表达式。关于这一点,我将发布一个新问题。@WillHanley请注意,您只需粘贴行即可。请看更新后的答案。我仍然不确定如何做我想做的事情。我发布了一个问题,我希望这个问题更清楚:谢谢。这是对我狭隘问题的回答。我仍然无法解决我更广泛的问题,那就是如何在文本文件文件夹上使用包含换行符的正则表达式。关于这一点,我将发布一个新问题。@WillHanley请注意,您只需粘贴行即可。查看更新后的答案。我仍然不确定如何做我想做的事情——发布了一个我希望更清楚的问题:
lbr_gsub_dir = function(pattern, replacement, perl = TRUE, newline = '\n', encoding = 'UTF-8', dir = '.', recursive = TRUE) {
 files = list.files(dir, full.names = TRUE, recursive = recursive)
 for (f in files) {
   x <- readLines(f, encoding = encoding, warn = FALSE)
   x <- paste(x, collapse = newline)
   x <- gsub(pattern, replacement, x, perl = perl)
   cat(x, file = f)
 }
}

folder <- "C:\\1"
lbr_gsub_dir("(?m)\\d+\\R(.+)", "\\1", dir = folder)