Regex Odd/Even Amount

java, regex

Solution

`^(a(aa)*1|(aa)+0)$`

or

`^(?:a(?:aa)*1|(?:aa)+0)$` if you are using captures.

The first portion: `a(aa)*1` will match any odd number of a's followed by a one, and the second portion: `(aa)+0` will match any even number of a's followed by a zero.

You can't keep track of the number of matches of a component of the pattern in regular expressions. They don't have memory. Fortunately, you can get around that limitation in this case.

Problem

I have a regex question that I do not know how to do. It has to match all strings consisting any number of a's at the beginning and then either a single 0 if the number of a's was even or a single 1 if the number of a's was odd. How can you keep track of even/odd? Sample - aaa1 - aaaa0

Original source