作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类似于 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_
任何想法如何使用正则表达式或什至另一个没有正则表达式的解决方案摆脱最后一个 "_"
。提前致谢。
最佳答案
删除任意数量的_
以及您可以使用的字符串末尾的 1+ 位数字
re.sub(r'(?:_\d+)+$', '', s)
请参阅regex demo
仅删除 1 或 2 次出现的 _<digits>
最后,替换 +
带有限制量词
r'(?:_\d+){1,2}$'
根据需要调整最小值和最大值。
关于python - 如何在Python中使用正则表达式从字符串中删除两个 "underline-numeric"子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041085/
我是一名优秀的程序员,十分优秀!