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

Python如何用正则表达式匹配@分隔路径的直接子节点

问题描述

树结构采用@分隔的数字字符串存储,字符串从左到右对应树从根节点到叶子节点的路径,相邻分段为父子关系:比如1@2@3@代表1是2的父节点,2是3的父节点,后续层级按这个规则顺延。
现在需要基于给定的节点A的路径字符串,生成对应的正则表达式,仅匹配A的直接子节点路径:

  • 两个@之间的数字支持任意长度
  • 当A取值为'1@2@3@'时,测试用例匹配要求如下:
    • B = '1@2@3@4@':A的直接子节点,需匹配
    • C = '1@2@3@4@5@':A的二级后代节点,不匹配
    • D = '1@2@3@5@':A的直接子节点,需匹配
正则实现方案

正则生成逻辑如下:

  1. 以节点A的完整路径作为强制前缀,保证待匹配路径从根到A的层级完全一致,前缀前加字符串起始符^
  2. 前缀后拼接\d+@,匹配直接子节点对应的任意长度数字加分隔符@
  3. 末尾加字符串结束符$,保证匹配的路径在子节点这层就结束,不会存在更深的层级

针对示例里A='1@2@3@'的场景,最终生成的正则为:

^1@2@3@\d+@$

匹配验证

  • 对B路径1@2@3@4@:前缀完全匹配,后续仅跟4@后到达字符串末尾,符合规则,匹配成功
  • 对C路径1@2@3@4@5@:前缀匹配后还存在5@层级,无法满足末尾结束的要求,匹配失败
  • 对D路径1@2@3@5@:前缀完全匹配,后续仅跟5@后到达字符串末尾,符合规则,匹配成功

通用场景提示:如果节点路径中可能出现正则特殊元字符,生成正则前先对A的路径字符串做正则转义处理即可,当前场景仅包含数字和@,无需额外转义。

内容的提问来源于stack exchange,提问作者João Duque

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:45:42