Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have a string like hello, "darkness, my", (old, friend) and I want this splitted result:
hello
"darkness, my"
(old, friend)

I found a way to ignore the commas in "-marks ( ,?=([^\"]*\"[^\"]*\")*[^\"]*$ ) and another way to ignore the commas in brackets ( ,(?=[^\\)]*(?:\\(|$)) ).
When I use the first, I get:
hello
"darkness, my"
friend)
And when I use the second, I get:
hello
"darkness
(old, friend)

But how do I combine these two solutions?

You can always use both tests... ,(?=...)(?=...) . Or to make your life simpler don't use split which describes delimiters, use Matcher#find and describe tokens which you are interested in any words OR "text between quotes" OR (text between parenthesis) . Or maybe even better don't use regex at all. Simply iterate over characters and pay attention to comma which is outside of parenthesis or quotes like stackoverflow.com/questions/12756651/… Pshemo Nov 23, 2016 at 17:49 Thanks both of you. It is for a very small thing so I just used both tests as @Pshemo suggested and it worked Selphiron Nov 23, 2016 at 17:57 @payamsbr I think so. It did not raise any exceptions and the data looks ok. I need to double check some of the data to be sure. Do you think that it should not work because of a mistake? Selphiron Nov 23, 2016 at 18:08

Probably easier to match the parts, rather than splitting them.

\s*("[^"]*"|\([^)]*\)|[^,]+)

This will capture each piece of data as group 1.

thanks that worked. The other solution was to use both tests ,(?=...)(?=...) as @Pshemo suggested but this is approach also works. Thanks Selphiron Nov 23, 2016 at 22:28

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question . Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers .