Home >Java >javaTutorial >How to Split Comma-Separated Text with Quotes Using Regular Expressions?

How to Split Comma-Separated Text with Quotes Using Regular Expressions?

Barbara Streisand
Barbara StreisandOriginal
2024-12-02 01:15:10458browse

How to Split Comma-Separated Text with Quotes Using Regular Expressions?

Splitting Comma-Separated Text with Quotes

In certain scenarios where text data contains comma-separated values, it becomes necessary to split the data based on commas. However, challenges arise when the data contains strings with embedded commas within quotes.

To address this, a versatile solution is to employ a regular expression that specifically targets commas located outside of double quotes:

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

Dissecting this regex:

  • :, represents the target comma between data values.
  • (?=...$) is a look-ahead assertion, indicating that the comma must be followed by the remaining expression.
  • (?:[^"]*"[^"]*")* matches zero or more repetitions of pairs of double quotes, ensuring that any embedded commas are excluded from the split.
  • [^"]* corresponds to any non-quote characters after the last double quote or the beginning of the string.

Alternatively, the same regex can be written in a more readable format using the (?x) modifier, which allows multi-line expressions to enhance readability:

String[] arr = str.split("(?x)   " + 
                     ",          " +   // Split on comma
                     "(?=        " +   // Followed by
                     "  (?:      " +   // Start a non-capture group
                     "    [^\"]* " +   // 0 or more non-quote characters
                     "    \"     " +   // 1 quote
                     "    [^\"]* " +   // 0 or more non-quote characters
                     "    \"     " +   // 1 quote
                     "  )*       " +   // 0 or more repetition of non-capture group (multiple of 2 quotes will be even)
                     "  [^\"]*   " +   // Finally 0 or more non-quotes
                     "  $        " +   // Till the end  (This is necessary, else every comma will satisfy the condition)
                     ")          "     // End look-ahead
                         );

This solution effectively resolves the issue of splitting comma-separated text while preserving the integrity of strings containing commas enclosed within double quotes.

The above is the detailed content of How to Split Comma-Separated Text with Quotes Using Regular Expressions?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn