python - 如何在 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_
"_"
任何想法如何使用正则表达式或什至没有正则表达式的另一种解决方案摆脱最后一个。提前致谢。
解决方案
_
要删除字符串末尾的任意数量和 1+ 数字,您可以使用
re.sub(r'(?:_\d+)+$', '', s)
查看正则表达式演示
要仅删除_<digits>
最后出现的 1 或 2 次 of,请替换+
为限制量词
r'(?:_\d+){1,2}$'
根据需要调整最小值和最大值。
推荐阅读
- swift - 以编程方式锚定视图组件会产生错误
- c# - int.MinValue 和 int.MaxValue 之间的随机数,包括
- javascript - 访问数组内的对象数据
- c - 在 C 中,有没有办法用一个格式化的打印语句打印一个未知大小的数组?
- c++ - QGraphicsScene 项目在两次(x2)位置绘制
- python - 无法将opencv图像拆分为RGB
- ajax - Erro 500 ajax-upload.php 上传头像
- excel - 如何通过 VBA 创建 API POST 请求
- python-3.x - 我会为语音识别选择什么设备来使用来自我计算机的音频?
- css - 如何自定义 react-popper 箭头