首页 > 解决方案 > 如何在 Python 中使用正则表达式从字符串中删除两个“下划线数字”子字符串?

问题描述

我有一个类似的字符串列表,geo_drill_0_10m_therm_15_15我需要删除最后两个“取消定线数字”子字符串(_15 和 _15)。

然而,在我的列表中,数字有不同的数字长度(例如_1_14),有时只有一个子字符串(例如_7),有时没有。

到目前为止,我尝试过

re.sub(r'(\d+\w?)(\d+)$', '', 'geo_drill_0_10m_therm_15_15') 正如预期的那样返回 geo_drill_0_10m_therm_

re.sub(r'(\d+\w?)(\d+\w?)$', '', 'geo_drill_0_10m_therm_15_15') 我希望完成这项工作,但它返回相同

geo_drill_0_10m_therm_

"_"任何想法如何使用正则表达式或什至没有正则表达式的另一种解决方案摆脱最后一个。提前致谢。

标签: pythonregexnumericunderline

解决方案


_要删除字符串末尾的任意数量和 1+ 数字,您可以使用

re.sub(r'(?:_\d+)+$', '', s)

查看正则表达式演示

要仅删除_<digits>最后出现的 1 或 2 次 of,请替换+为限制量词

r'(?:_\d+){1,2}$'

根据需要调整最小值和最大值。


推荐阅读