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
相关产品推荐
相关产品推荐

