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

如何编写正则表达式匹配r两侧长度对称的特定文本模式

匹配'r'两侧模式长度一致的正则表达式方案

你需要匹配的是字符r左右两侧分别由it和ti重复相同次数组成的字符串,比如itrti(1次it对应1次ti)、ititrtiti(2次it对应2次ti),但要排除两侧重复次数不同的情况,比如itrtiti(1次it对应2次ti)。之前用的(it)+r(ti)+只要求两侧至少出现一次,无法限制次数一致,以下是可行的解决方案:

方案1:正则配合代码逻辑(通用所有引擎)

先用基础正则匹配结构框架:

^((it)+)r((ti)+)$

然后在代码中检查左侧捕获组(对应(it)+的内容)和右侧捕获组(对应(ti)+的内容)的长度是否相等——因为每个it和ti都是2个字符,长度相等就意味着重复次数完全一致。

举个JavaScript的例子:

const regex = /^((it)+)r((ti)+)$/;
const testStr = "ititrtiti";
const match = testStr.match(regex);
if (match && match[2].length === match[4].length) {
  console.log("匹配成功");
} else {
  console.log("匹配失败");
}

方案2:纯正则(依赖引擎扩展)

如果使用支持捕获组长度引用的引擎(比如Perl),可以直接用正则完成校验:

^((it)+)r(ti)+$ && length($1) == length($3)

如果使用支持递归匹配的引擎(比如PCRE、Python的regex库),可以用递归正则绑定两侧的重复次数:

^(?=(it)+r(ti)+$)(?:it){1,}r(?:ti)\1$(*SKIP)(*FAIL)|^(it)(?1)*r(ti)(?3)*$

方案3:硬编码次数(简单场景)

如果你的使用场景中,it/ti的重复次数是有限的(比如最多3次),可以直接枚举所有符合条件的模式:

^itrti$|^ititrtiti$|^itititrtititi$

内容的提问来源于stack exchange,提问作者Michael Hayford

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:47:33