Can I use regex to match every third occurrence of a specific character?
java, regex, split
Solution
String re = "(?<=\\G[^;]*;[^;]*;[^;]*);";
String text = "1.95;1.99;1.78;10.9;11.45;10.5;25.95;26;45;21.2";
String[] result = Pattern.compile(re).split(text);
Now the result is what you want Hint: \G in java's regex is a boundary matcher like `^`, it means 'end of previous match'
Problem
I have a string containing some delimited values: ``` 1.95;1.99;1.78;10.9;11.45;10.5;25.95;26;45;21.2 ``` What I'd like to achieve is a split by every third occurence of a semicolon, so my resulting `String[]` should contain this: ``` result[0] = "1.95;1.99;1.78"; result[1] = "10.9;11.45;10.5"; result[2] = "25.95;26;45"; result[3] = "21.2"; ``` So far I've tried several regex solutions, but all I could get to was finding any patterns that are between the semi colons. For example: ``` (?<=^|;)[^;]*;?[^;]*;?[^;]* ``` Which matches the values I want, so that makes it impossible to use `split()` or am I missing something? Unfortunately I can only supply the pattern used and have no possibility to add some looping through results of the above pattern.