You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB中如何用正则表达式匹配含动态日期的CSV文件名?

VB读取带动态日期的CSV文件:正则匹配文件名的正确方式

你不能直接把正则表达式作为路径传给IO.StreamReader——它只会把这个字符串当作实际路径解析,完全不会识别正则语法,这就是你报错的原因。正确的做法是先筛选出符合正则规则的文件,再用StreamReader读取,步骤如下:

1. 定义规则与筛选文件

  • 先指定目标文件夹路径,再用正则表达式定义文件名格式(你的需求是SEBCTS开头+8位日期数字+.csv结尾,用\d{8}匹配数字比\w{8}更精准):
    ' 目标文件夹路径
    Dim folderPath As String = "\\FolderA\FolderB\"
    ' 匹配SEBCTS+8位数字+csv的正则
    Dim fileNameRegex As New Regex("^SEBCTS\d{8}\.csv$")
    
  • 遍历文件夹,筛选出符合规则的文件:
    ' 获取所有符合正则的文件路径
    Dim matchedFiles As IEnumerable(Of String) = Directory.EnumerateFiles(folderPath).Where(Function(filePath)
                                                                                             Return fileNameRegex.IsMatch(Path.GetFileName(filePath))
                                                                                         End Function)
    

2. 读取目标文件

因为可能存在多个匹配文件,先判断是否找到,再读取:

If matchedFiles.Any() Then
    ' 取第一个匹配文件(如果每天只有一个,直接用这个;如果有多个,可按日期排序取最新)
    Dim targetFilePath As String = matchedFiles.First()
    
    ' 用StreamReader读取文件
    Using reader As New IO.StreamReader(targetFilePath)
        Dim line As String
        ' 逐行读取处理
        While (line = reader.ReadLine()) IsNot Nothing
            ' 这里添加你的CSV行处理逻辑
            Console.WriteLine(line)
        End While
    End Using
Else
    ' 未找到匹配文件的提示
    MsgBox("未找到符合格式的CSV文件")
End If

3. 进阶:取最新日期的文件

如果文件夹里有多个历史文件,想要读取最新日期的,可按文件名中的日期排序:

' 按文件名中的8位日期降序排序,取第一个(最新)
Dim latestFile As String = matchedFiles.OrderByDescending(Function(file)
                                                              ' 从SEBCTS后截取8位日期字符串
                                                              Return Path.GetFileNameWithoutExtension(file).Substring(6)
                                                          End Function).First()

内容的提问来源于stack exchange,提问作者jbpm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:25:24