首页 > 解决方案 > 在python中使用正则表达式进行模式匹配没有给出预期的操作

问题描述

我有句子,需要检测下面的模式,并在该模式结束之前创建子字符串

subtask = 'Subtask25-35-23-860-05000-002TOPEND-UDYDATE20160901'
dd = re.findall('\-[0-9]*',subtask)
ind = subtask.index(dd[-1]) + len(dd[-1])
subtask [:ind]

预期输出为:'Subtask25-35-23-860-05000-002'。dd o/p: ['-35', '-23', '-860', '-05000', '-002', '-'] 预期为:['-35', '-23', ' -860','-05000']

标签: regexpython-3.x

解决方案


使用边界\b

前任:

import re

subtask = 'Subtask25-35-23-860-05000-002TOPEND-UDYDATE20160901'
print(re.findall(r"\b(-\d+)\b", subtask))  

输出:

['-35', '-23', '-860', '-05000']

推荐阅读