【发布时间】:2013-08-04 07:52:59
【问题描述】:
我有一个不知道该怎么做的正则表达式问题。 它必须匹配开头包含任意数量 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 后跟一个零。
您无法跟踪正则表达式中模式组件的匹配次数。他们没有记忆。幸运的是,在这种情况下,您可以绕过这个限制。
【讨论】:
你可以使用:
^(?:aa)*(?:a1|0)$
【讨论】: