我有一个类似于geo_drill_0_10m_therm_15_15
的字符串列表,我需要删除最后两个"undeline-numeric"子字符串(_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_
任何想法如何使用正则表达式甚至没有正则表达式的另一种解决方案摆脱最后一个"_"
。提前谢谢。
要删除字符串末尾的任意数量的_
和 1+ 位
re.sub(r'(?:_d+)+$', '', s)
查看正则表达式演示
若要在末尾仅删除 1 或 2 次出现的_<digits>
,请将+
替换为限制量词
r'(?:_d+){1,2}$'
根据需要调整最小值和最大值。