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

Python正则表达式如何提取'-'前内容并删除末尾2个字符

解决方案

你需要的单分组正则表达式写法如下:
^([^-]*)..(?:-.*)?$

逻辑说明

  • ^ 匹配字符串起始位置
  • ([^-]*) 捕获从字符串开头到第一个-之前的所有内容(如果字符串没有-就捕获完整字符串),最终我们需要的结果会存在这个分组中
  • .. 匹配要删除的最后2个字符
  • (?:-.*)? 非捕获可选分组,匹配可能存在的-及其之后的所有内容,?表示没有-时这部分不生效
  • $ 匹配字符串结束位置

Python 使用示例

import re

# 编译正则
pattern = re.compile(r'^([^-]*)..(?:-.*)?$')

# 测试用例1
test_1 = "abcde"
result_1 = pattern.match(test_1).group(1)
print(result_1)  # 输出:abc

# 测试用例2
test_2 = "jklmno-pqrs"
result_2 = pattern.match(test_2).group(1)
print(result_2)  # 输出:jklm

边界说明

如果你的业务场景中存在-之前的内容长度不足2的情况,可以额外加长度校验逻辑,你给出的示例场景下上述正则可直接使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:36:05