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

Python正则如何获取特定特殊字符组的正确起始索引?

解决正则匹配特定字符组合的索引问题

你的问题出在当前正则表达式的逻辑上:[/ \\][\\ /] 会匹配任意两个分别来自两个字符类的字符,而不是你要的仅/ \和\ /这两种固定组合。所以最后那两个连续的/(位置12和13)也被误匹配了,导致多出来一个索引12。

修正方案

把正则改成明确匹配两种目标组合,而不是用字符类的任意组合:

import re
a = re.finditer(r"(?:/ \\|\\ /)", "/ \\ / \\ / \\ / /")
print([m.start(0) for m in a])

解释一下改动:

  • (?:...) 是非捕获组,用来把两种匹配规则打包在一起,不会额外生成多余的捕获组
  • | 表示“或”的逻辑,明确指定要么匹配/ \,要么匹配\ /
  • 这样就只会精准匹配你需要的两种字符组合,不会把//这种不符合预期的情况算进去

运行上面的代码,就会得到你期望的结果:[0, 2, 4, 6, 8, 10]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:12:35