我有一个正则表达式问题,我不知道该怎么做。 它必须匹配包含任意数量的a的所有字符串,然后如果a的数目是偶数,则可以是单个0,如果a的数目是奇数,则可以是单个1。正则表达式奇/偶数量
如何跟踪偶数?
样品
- AAA1
- aaaa0
我有一个正则表达式问题,我不知道该怎么做。 它必须匹配包含任意数量的a的所有字符串,然后如果a的数目是偶数,则可以是单个0,如果a的数目是奇数,则可以是单个1。正则表达式奇/偶数量
如何跟踪偶数?
样品
^(a(aa)*1|(aa)+0)$
或
^(?:a(?:aa)*1|(?:aa)+0)$
如果您使用捕获。
第一部分:a(aa)*1
将匹配a的任意奇数,后面跟一个,第二部分:(aa)+0
将匹配任何偶数个a,后跟零。
您无法跟踪正则表达式中模式组件的匹配数量。他们没有记忆。幸运的是,在这种情况下你可以绕过这个限制。
谢谢你的回答,你能解释一下吗?:,我知道吗?意味着0或1,但它们是什么意思呢? –
(?:pattern)只是Java中(模式)的非捕获等价物。如果您没有在匹配器中检查组,那么这两种模式都是相同的。在这种情况下,它并不意味着0或1. http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html –
你可以使用:
^(?:aa)*(?:a1|0)$
你尝试过什么吗? –
粘贴一些示例字符串。 –