r - 如何定义我想要的正则表达式?
问题描述
我正在尝试遍历文件。一些具有特定名称的文件应该在函数中使用。看起来像:
func <- function(number){
fileList <- list.files(pattern=c("^Start_", number, "_end.csv"))
}
我只想使用文件名中编号完全正确的文件。当我10
现在使用 as 参数运行该函数时,它还会使用文件名100
或1000
文件名中的文件。
这是我已经尝试过的:
pattern=c("^Start_", number, "_end.csv")
pattern=c("^Start_", number, "^_end.csv")
pattern=c("^Start_", "^", number, "$", "_end.csv")
当我使用as 参数运行函数时,所有这些模式也使用文件名中带有100
和的文件。1000
10
我怎样才能防止这种情况?
解决方案
pattern
参数 to应该采用list.files
单个正则表达式string,而不是字符串向量。试试这个版本:
func <- function(number) {
fileList <- list.files(pattern=paste0("^Start_", number, "_end\\.csv$"))
}
但是鉴于您使用的正则表达式模式是固定的,因此使用正则表达式没有多大意义。但是,如果您想一次性匹配一系列 ID,例如 20、30 和 40,那么正则表达式会变得更有用:
ids <- c(20, 30, 40)
regex <- paste(ids, collapse="|")
fileList <- list.files(pattern=paste0("^Start_(", regex, ")_end\\.csv$"))
推荐阅读
- python - Python 3,将函数中的字典值传递给另一个函数
- docker - 通过域名在 EC2 上进行 Docker 端口转发?
- python-3.x - Microsoft Equation 3.0 对象的 Openpyxl 错误
- python - 在 IntelliJ 中找不到参数错误的方法 python()
- php - 如何使用 PHP 将生成的 PDF 发送到邮件?
- python - wget HTTP 错误 403:尝试下载 pdf 时在 Python 中被禁止
- node.js - 为什么 Google Cloud Run 会大量重启容器/创建新实例?
- node.js - 从用户键入 url 创建的获取请求正文和从单击的链接创建的获取请求正文是否有区别?
- reactjs - 如何为导航链接制作子菜单?
- python - 我正在使用 google colab 的 Tenserflow 1.x,但为什么我会出错