регулярное выражение для разбора CSV - PullRequest
4 голосов
/ 10 апреля 2010

Я ищу регулярное выражение, которое будет анализировать строку за раз из файла CSV. в основном то, что делает string.readline (), но это позволит разрывать строки, если они находятся в двойных кавычках.

или есть более простой способ сделать это?

Ответы [ 3 ]

5 голосов
/ 10 апреля 2010

Использование регулярных выражений для синтаксического анализа CSV подходит для простых приложений с хорошо контролируемыми данными CSV, но часто бывает так много полученных , таких как экранирование для встроенных кавычек и запятых в цитируемых строках и т. д. Это часто делает регулярное выражение хитрым и рискованным для этой задачи.

Я рекомендую хорошо протестированный модуль CSV для вашей цели.

- Изменить: - См. Эту прекрасную статью, Хватит качать свой собственный CSV Parser!

1 голос
/ 10 апреля 2010

Библиотека FileHelpers довольно хороша для этой цели.

http://www.filehelpers.net/

0 голосов
/ 14 февраля 2012

Вместо того чтобы полагаться на подверженные ошибкам регулярные выражения, на упрощенную «разделенную» логику или сторонние компоненты, используйте встроенную функциональность .NET Framework:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...