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

正则表达式匹配带冒号结尾的引号内模式中的连字符

解决方案:匹配特定模式内的连字符

要精准匹配那些位于以冒号结尾的连字符分隔单词序列中的连字符,我们可以使用带有正向/反向断言的正则表达式,确保只捕获符合场景要求的连字符。

最终正则表达式

(?<=\w)-(?=\w+(?:-\w+)*:)

正则逻辑拆解

让我们一步步拆解这个表达式的作用:

  • (?<=\w):反向肯定预查,确保连字符-的前面是一个单词字符(字母、数字、下划线),避免匹配字符串开头的无效连字符。
  • -:我们要匹配的目标字符——连字符。
  • (?=\w+(?:-\w+)*:):正向肯定预查,确保连字符后面的内容满足:
    • 首先是至少一个单词字符\w+
    • 接着可以有零或多组-\w+(也就是额外的连字符+单词组合)
    • 最终以冒号:结尾,这是整个模式的关键判定条件

场景验证(对应你的测试用例)

我们逐个测试你给出的场景:

  • 模式"word-word"::匹配到1个-
    正则会捕获word和word之间的连字符,因为整个序列以冒号结尾,符合预查条件。
  • 模式"word-word":无匹配
    序列结尾没有冒号,正向预查不满足,因此不会捕获任何连字符。
  • 模式"word-word-word"::匹配到2个-
    两个连字符都满足前后是单词字符,且整个序列最终以冒号结尾,因此全部被匹配。
  • 模式"word-word:无匹配
    不仅结尾没有冒号,字符串本身还不完整,正向预查完全不满足,无匹配结果。

额外说明

如果你的"word"定义不包含下划线,或者需要更精准的字符范围,可以把\w替换成[a-zA-Z0-9]来限制为纯字母数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:31:13