(,|\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 mog zawiera cudzysowy poprzedzone 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>Zamiana separatorw CSV z przecinkw na tabulacje</title>
</head>

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

<p><input type="button" value="Zastp" onclick="commas_to_tabs()"></p>

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

<script>
function commas_to_tabs () {
    var input = document.getElementById('input'),
        output = document.getElementById('output'),
        regex = /(,|\r?\n|^)([^",\r\n]+|"(?:[^"]|"")*")?/g,
        result = '',
        match;

    while (match = regex.exec(input.value)) {
        // Sprawdza warto pierwszego odwoania wstecz.
        if (match[1] == ',') {
            // Dodaje tabulacj (w miejsce dopasowanego przecinka)
            // i warto reprezentowan przez drugie odwoanie wstecz.
            // Jeli drugie odwoanie wstecz jest niezdefiniowane (odpowiednia grupa
            // przechwytujca jest opcjonalna, zatem moemy by pewni, e ta grupa nie
            // uczestniczya w dopasowaniu), stosujemy acuch pusty.
            result += '\t' + (match[2] || '');
        } else {
            // Dodaje cae dopasowanie do wyniku.
            result += match[0];
        }

        // Zapobiega wejciu w nieskoczon ptl przez cz przegldarek.
        if (match.index == regex.lastIndex) regex.lastIndex++;
    }

    output.value = result;
}
</script>
</body>
</html>
