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

如何编写正则:匹配前缀为偶数个?的',奇数个?时不匹配

可用正则表达式

(?<=(?<!\?)(?:\?\?)*)'

实现逻辑

  1. 以零宽正向后行断言限定'的前置匹配规则,不会额外捕获前缀字符,完全适配split场景的需求
  2. (?<!\?) 确保前缀的起始位置没有单独的?,避免奇数个?被误判
  3. (?:\?\?) 非捕获组匹配2个连续的?,*表示该组可出现0次或多次,即前置?总个数为偶数(0、2、4……)

效果验证

针对你给出的测试场景:
测试字符串:' ??' ????' ?' ??????'
执行split操作的代码示例(JS环境):

const testStr = "' ??' ????' ?' ??????'";
const matchReg = /(?<=(?<!\?)(?:\?\?)*)'/g;
const splitResult = testStr.split(matchReg);
console.log(splitResult); // 输出:['', '??', '????', "?'", '??????']

完全符合你的预期结果。

兼容提示:如果所用正则引擎不支持可变长度后行断言(如Java 8及更早版本),可换用匹配规则(^|[^?])(?:\?\?)*',提取匹配结果中的'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:27:01