Home >Java >javaTutorial >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:
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!