python - 使正则表达式不贪婪
问题描述
我有一列字符串:
“19.8983.00”、“19.8984.00”、“19.8985.00”、“19.8986.00”、“19.8989.00”、“19.8990.00”、“19.8991.00”、“19.8992.00”、“19.8993” .00'、'19.8994.00'、'21.0515.00'、'21.0520.00'、'21.0521.00'、'21.0523.00'、'21.0530.00'、'21.0531.00'、'21.0532.00' '、'21.0533.00'、'21.0534.00'、'21.0535.00'
我想删除“19”。从字符串的开头,字符串开头的“.21”和字符串结尾的“.00”。
我用正则表达式试过这个
composition['compound_code'].replace (regex = True, inplace = True, to_replace= r'^19.',value=r'')
composition['compound_code'].replace (regex = True, inplace = True, to_replace= r'^21.',value=r'')
composition['compound_code'].replace (regex = True, inplace = True, to_replace= r'.00$',value=r'')
问题是以下字符串:
“19.1400.00”、“19.1702.00”、“19.2113.00”、“19.2123.00”、“19.2130.00”、“19.2141.00”、“19.2152.00”、“19.2154.00”、“19.2301” .00', '19.2302.00',
被转换为:
'1400'、'1702'、'3'、'0'、'1'、'2'、'4'、'2301'、'2302'、
我的正则表达式很接近,但并不完全正确(例如19.2154.00
以某种方式转换为4
)。如何使我的正则表达式正确且非贪婪,以便它仅适用于第一场比赛(以及最后一场比赛.00
)?
解决方案
使用str.replace
涵盖所有三个替换条件的单个正则表达式替换:
composition['compound_code'] = composition['compound_code'].str.replace(r'^(?:19|21)\.|\.00$', '')
推荐阅读
- python - 如何列出该包内未调用的python包的函数
- ruby - 如何在我的规范文件中包含图像路径?
- c# - 无法使用 XamlIslands 通过 WPF 发布 UWP:未找到 Microsoft.Windows.UI.Xaml.CSharp.targets
- java - 编写一个方法,将提供的二进制数字(作为字符串)转换为十进制数
- reactjs - 从 UI 改变(或编辑)Neo4j 数据/关系
- jsf - 从庞大的列表(10k+ 项)中选择许多的最佳做法是什么?
- .net - 运行两个实例时自动增量不正确
- python - '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书
- java - 如何将尤里卡客户端指向部署在不同 IP 地址中的尤里卡服务器,而不是在本地主机中
- c# - 不记名令牌无效