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

PCRE正则表达式:正向预查或管道符后反向引用失效问题

正则表达式反向引用匹配问题

我的正则表达式如下:

(?'a'[~_])(?=(?!\s)(?:(?!\k'a').)+(?<!\s)\k'a')|(?=(?=(?'b'[\s\S]*))(?'c'\k'a'(?!\s)(?:(?!\k'a').)+(?<!\s)(?=\k'b'\z)|(?<=(?=x^|(?&c))[\s\S])))\k'a'

问题描述

管道符左侧的片段(?'a'[~_])(?=(?!\s)(?:(?!\k'a').)+(?<!\s)\k'a')中,对命名捕获组(?'a'[~_])的反向引用\k'a'可以正常工作;但管道符右侧的片段(?=(?=(?'b'[\s\S]*))(?'c'\k'a'(?!\s)(?:(?!\k'a').)+(?<!\s)(?=\k'b'\z)|(?<=(?=x^|(?&c))[\s\S])))\k'a'里,同样的反向引用\k'a'无法匹配。

正则用途

该正则用于仅匹配~test~或_test_这类字符串的前后分隔符,附带额外规则:先通过正向预查匹配起始分隔符,再利用可变长度后向预查匹配结束分隔符。

限制条件

我清楚可以用\K或捕获组大幅简化查询,但这两种方式都不可行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:40:32