\G is a zero-width assertion. It is also a boundary matcher that asserts positions at the end of the previous match or at the start of the string, such as the \A assertion for the very first match. The Java regex engine remembers the position of \G within the context of a Matcher instance. If Matcher is instantiated again or is reset, then the position of \G is also initialized to the start of the string.
For example, consider the following input:
Consider that we need to replace every comma that occurs only at the start of the input with a hyphen so that we have the same number of hyphens as the number of commas at the start. Our final output should be the following:
We cannot just ...