正则表达式奇数/偶数

时间:2013-08-04 07:53:00

标签: java regex

我有一个正则表达式问题,我不知道该怎么做。 它必须匹配包含开头任意数量的a的所有字符串,然后如果a的数量为偶数则为单个0,或者如果a的数量为奇数则为单个1。

如何跟踪偶数/奇数?

样品

  • AAA1
  • aaaa0

2 个答案:

答案 0 :(得分:10)

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

^(?:a(?:aa)*1|(?:aa)+0)$如果你正在使用捕获。

第一部分:a(aa)*1将匹配任意奇数的a后跟一个,第二部分:(aa)+0将匹配任意偶数的a后跟零。

您无法跟踪正则表达式中模式组件的匹配数。他们没有记忆。幸运的是,在这种情况下你可以解决这个限制。

答案 1 :(得分:7)

您可以使用:

^(?:aa)*(?:a1|0)$