(,|\r?\n|^)([^",\r\n]+|"(?:[^"]|"")*")?
Opcje wyrae regularnych: Brak (tryb dopasowywania symboli ^ i $ do znakw podziau wiersza nie moe by wczony)
Odmiany wyrae regularnych: . NET, Java, JavaScript, PCRE, Perl, Python, Ruby


( , | \r?\n | ^ )   # Pierwsza grupa przechwytujca pasuje do separatorw pl...
                    #   lub pocztku przetwarzanego acucha.
(                   # Druga grupa przechwytujca pasuje do pojedynczych pl:
  [^",\r\n]+        #   nieotoczonych cudzysowami
 |                  #  lub...
  " (?:[^"]|"")* "  #   pl otoczonych cudzysowami, ktre same mog zawiera cudzysowy (ze znakami ucieczki).
)?                  # Ta grupa jest opcjonalna, poniewa pola mog by puste.
Opcje wyrae regularnych: Swobodne stosowanie znakw biaych (tryb dopasowywania symboli ^ i $ do znakw podziau wiersza nie moe by wczony)
Odmiany wyrae regularnych: . NET, Java, PCRE, Perl, Python, Ruby


Przykad rozwizania w JavaScripcie
<html>
<head>
<title>Wyodrbnianie trzeciej kolumny z acucha w formacie CSV</title>
</head>

<body>
<p>Dane wejciowe:</p>
<textarea id="input" rows="5" cols="75"></textarea>

<p><input type="button" value="Wyodrbnij trzeci kolumn"
    onclick="display_csv_column(2)"></p>

<p>Dane wynikowe:</p>
<textarea id="output" rows="5" cols="75"></textarea>

<script>
function display_csv_column (index) {
    var input = document.getElementById('input'),
        output = document.getElementById('output'),
        column_fields = get_csv_column(input.value, index);

    if (column_fields.length > 0) {
        // Wywietla kady rekord w odrbnym wierszu, oddzielony sekwencj nowego wiersza (\n).
        output.value = column_fields.join('\n');
    } else {
        output.value = '[Nie znaleziono adnych danych do wyodrbnienia]';
    }
}

// Zwraca tablic pl CSV pod wskazanym indeksem (liczonym od zera).
function get_csv_column (csv, index) {
    var regex = /(,|\r?\n|^)([^",\r\n]+|"(?:[^"]|"")*")?/g,
        result = [],
        column_index = 0,
        match;

    while (match = regex.exec(csv)) {
        // Sprawdza warto reprezentowan przez pierwsze odwoanie wstecz. Jeli t wartoci jest przecinek,
        // zwiksza warto zmiennej column_index. W przeciwnym razie przypisuje tej zmiennej warto 0.
        if (match[1] == ',') {
            column_index++;
        } else {
            column_index = 0;
        }
        if (column_index == index) {
            // Dodaje pole (reprezentowane przez drugie odwoanie wstecz) na koniec tablicy wynikowej.
            result.push(match[2]);
        }
        // Zapobiega wejciu w nieskoczon ptl przez cz przegldarek.
        if (match.index == regex.lastIndex) regex.lastIndex++;
    }

    return result;
}
</script>
</body>
</html>
