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

正则负向前瞻如何排除短划线开头短行但保留长于35字符的对应行

你的修改存在的问题

你调整后的负向先行断言逻辑完全和需求相悖:(?!.*(?:-\h.{0,35}))的规则是只要行内任意位置出现-加水平空白、且后面跟着0到35个字符,就直接排除该行。所有以- 开头的行,不管总长度多少,开头的- 后必然存在0-35个字符的片段,所以这个断言会把所有短划线开头的行全部过滤掉,自然达不到你要保留长的短划线开头行的要求。

正确正则及逻辑

^(?!^-.{0,33}$)(?=.{35}).{0,35}[\h.]

各部分逻辑说明:

  • ^ 匹配行首位置
  • (?!^-.{0,33}$) 负向先行断言,仅排除**以短划线开头且整行长度≤34(即不足35)**的行,其余所有行都放行
  • (?=.{35}) 正向前瞻,确保当前行总长度至少为35,符合你要匹配前35个字符内内容的前提
  • .{0,35}[\h.] 保持你原来的匹配逻辑:从行首开始匹配最多35个字符,且匹配内容的末尾为水平空白符或点号。

示例测试效果

对你给出的三行示例文本匹配结果如下:

  • 普通长文本行:匹配成功,符合预期
  • 短划线开头的长文本行:总长度超过35,不会被排除,匹配成功,符合预期
  • 短划线开头的短文本行:长度不足35,被排除,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:03