\G boundary assertion
\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:
,,,,,123,45,67
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:
-----123,45,67
We cannot just do replaceAll
by matching each comma, since that will also replace the comma after 123
and 45
, and moreover, we want the same number of hyphens as the number of commas in the input string.
For cases like this, we can use the \G
assertion and use this Java code snippet...