Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个不知道该怎么做的正则表达式问题。它必须匹配开头包含任意数量 a 的所有字符串,如果 a 的数量为偶数,则匹配单个 0,如果 a 的数量为奇数,则匹配单个 1。
您如何跟踪偶数/奇数?
样本
^(a(aa)*1|(aa)+0)$
或者
^(?:a(?:aa)*1|(?:aa)+0)$如果您正在使用捕获。
^(?:a(?:aa)*1|(?:aa)+0)$
第一部分:a(aa)*1将匹配任何奇数个 a 后跟一个,第二部分:(aa)+0将匹配任何偶数个 a 后跟一个零。
a(aa)*1
(aa)+0
您无法跟踪正则表达式中模式组件的匹配数。他们没有记忆。幸运的是,在这种情况下,您可以绕过该限制。
你可以使用:
^(?:aa)*(?:a1|0)$