正则表达式解析csv

时间:2010-04-09 22:38:26

标签: asp.net regex csv

我正在寻找一个可以从csv文件一次解析一行的正则表达式。基本上,string.readline()的作用是什么,但如果它们在双引号内,它将允许换行。

或者有更简单的方法吗?

3 个答案:

答案 0 :(得分:5)

使用正则表达式来解析CSV对于控制良好的CSV数据中的简单应用程序来说很合适,但通常有很多陷阱,例如转义嵌入式引号和引用字符串中的逗号< / strong>等等。这通常会使正则表达式变得棘手且风险很大。

我建议您使用经过充分测试的CSV模块。

- 编辑: - 请参阅此优秀文章Stop Rolling Your Own CSV Parser!

答案 1 :(得分:1)

FileHelpers 库非常适用于此目的。

http://www.filehelpers.net/

答案 2 :(得分:0)

使用.NET框架的内置功能,而不是依赖容易出错的正则表达式,而不是简单的“拆分”逻辑或第三方组件,

Using Reader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\MyFile.csv")

    Reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited

    Dim MyDelimeters(0 To 0) As String
    Reader.HasFieldsEnclosedInQuotes = False
    Reader.SetDelimiters(","c)

    Dim currentRow As String()
    While Not Reader.EndOfData
        Try
            currentRow = Reader.ReadFields()
            Dim currentField As String
            For Each currentField In currentRow
                MsgBox(currentField)
            Next
        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
            MsgBox("Line " & ex.Message &
            "is not valid and will be skipped.")
        End Try
    End While
End Using