如何用正则匹配指定listId下的特定列表项?
正则匹配特定listId下的目标列表项解决方案
方案1:分两步处理(更易维护)
提取
check listId对应的完整区块
使用正则捕获目标listId下的所有列表内容,确保只聚焦在目标区块:^> check listId\n(?:> - \[[vx ]\].*\n?)+该正则会匹配从
> check listId起始,到下一个非列表行(或文本结尾)的所有内容,精准锁定目标区块。提取区块内的目标列表项
对第一步捕获的内容,用你原本的正则匹配符合要求的项(排除[x]的行):> - \[(v| )\]\s?[a-z].*\n?
方案2:一步到位的正则(单次匹配场景)
若需单个正则直接匹配目标项,可利用正向环视限定上下文,确保匹配的列表项属于check listId区块:
(?<=^> check listId\n(?:> - \[[vx ]\].*\n)*)> - \[(v| )\]\s?.*(?:\n|$)
- 细节说明:
- 正向后顾断言
(?<=^> check listId\n(?:> - \[[vx ]\].*\n)*):确保当前行前是> check listId及任意数量的历史列表行(兼容[v]/[x]/[ ]格式)。 - 后半段
> - \[(v| )\]\s?.*(?:\n|$):精准匹配[v]或[ ]开头的目标列表项。 - 注意:该正则要求引擎支持无限长度后顾断言(如Python
re、Java正则等),若使用不支持的引擎(如JavaScript),建议优先选择方案1。
- 正向后顾断言
内容的提问来源于stack exchange,提问作者pljvp
相关产品推荐
相关产品推荐

