You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于字母表{a,b}的正则表达式构建:a子序列偶长、b子序列奇长

问题分析与正则表达式推导

首先明确题目要求:字母表{a,b}上的字符串需满足两个核心条件:

  1. 所有非空的a子序列(仅由a组成的子序列)长度为偶数;
  2. 所有非空的b子序列(仅由b组成的子序列)长度为奇数。

条件拆解

  • 针对条件1:如果字符串中存在至少1个a,必然能选出长度为1的a子序列(取单个a),其长度为奇数,直接违反要求。因此符合条件的字符串不能包含任何a。
  • 针对条件2:如果字符串中存在2个或更多b,必然能选出长度为2的b子序列(取两个b),其长度为偶数,违反要求。因此符合条件的字符串只能包含恰好1个b。

正确的正则表达式

唯一满足所有条件的字符串就是单个b,对应的正则表达式为:

b

你原表达式的问题

你写出的(a|b(aa|bb)*(ab|ba)) (aa|bb|(ab|ba)(aa|bb)*(ab|ba))*仅能保证整个字符串的a总数为偶数、b总数为奇数,但完全无法满足“每个子序列”的严格要求。比如该表达式会生成ab这类字符串,其中存在长度为1的a子序列(奇数),直接违反题目条件。

内容的提问来源于stack exchange,提问作者Alejandro Hernández

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:01:19