I need to split a string where there\'s a comma, but it depends where the comma is placed.
As an example
consider the following:
C=75,user_is
consider using a parser generator for parsing this kind of query. E.g: javacc or antlr
As an alternative, if you need more than one level of parentheses, you can create a little string parser for parsing the string character by character.
If you don't have more than one level of parentheses, you could do a split on a comma that isn't followed by a closing )
before an opening (
:
String[] splitArray = subjectString.split(
"(?x), # Verbose regex: Match a comma\n" +
"(?! # unless it's followed by...\n" +
" [^(]* # any number of characters except (\n" +
" \\) # and a )\n" +
") # end of lookahead assertion");
Your proposed rule would translate as
String[] splitArray = subjectString.split(
"(?x), # Verbose regex: Match a comma\n" +
"(?<!\\p{Lu}) # unless it's preceded by an uppercase letter\n" +
"(?!\\p{Lu}) # or followed by an uppercase letter");
but then you would miss a split in a text like
Org=NASA,Craft=Shuttle