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

如何用正则表达式提取连字符连接的字母数字子串?

解决方案

正则表达式

使用以下正则表达式可精准提取目标子串:

[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)+

匹配逻辑说明

  • [a-zA-Z0-9]+:匹配开头的字母数字序列(至少1个字符)
  • (?:-[a-zA-Z0-9]+)+:匹配「连字符+字母数字序列」的组合,且该组合至少出现一次(确保子串包含连字符)
  • 整个表达式保证匹配的子串仅由字母数字和连字符构成,且连字符不会出现在子串首尾,同时能完美区分纯字母/纯数字的无关子串(如RAM、001这类不会被匹配)

验证示例

针对你给出的三个字符串变体:

  1. '001_AML-Micro-CTD_RAM_20220101' → 匹配结果:AML-Micro-CTD
  2. '001_RAM_20220101_AML-Micro-CTD' → 匹配结果:AML-Micro-CTD
  3. '001_AML-Micro-CTD_RAM_20220101' → 匹配结果:AML-Micro-CTD

失效原因分析

你之前使用的[a-zA-Z-]类表达式仅匹配单个符合要求的字符,没有约束子串的整体结构,导致会错误包含后续连续的字母(比如RAM)。而上述正则通过明确的结构规则,仅匹配由连字符连接的字母数字片段组合,避免了无关内容的混入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:28