如何修改正则实现提取文件中特定字符串后的正负浮点数?
解决正则匹配正负浮点数的问题
原正则表达式仅能匹配无符号正浮点数,核心原因是\d+\.\d+只匹配纯数字组成的浮点格式,未考虑负号的可选性。只需在数字匹配部分添加-?(表示负号可出现0次或1次),即可同时兼容正、负浮点数。
修改后的正则表达式
r'^' + str_to_search + r' (-?\d+\.\d+)'
完整代码示例
import re lines = """aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb cccccccccc qq vvv rrr ssssa 22.6 zzzzx bbbb 12.0 xxxxxxxxxx -1.099 zzzz bbb nnn 33.5""" str_to_search = 'xxxxxxxxxx' num = re.findall(r'^' + str_to_search + r' (-?\d+\.\d+)', lines, flags=re.M) print(num) # 输出: ['-1.099']
如果需要同时匹配整数形式的数值(如-5或3),可进一步将正则调整为(-?\d+\.?\d*),但根据你的示例场景,(-?\d+\.\d+)已足够满足需求。
内容的提问来源于stack exchange,提问作者AbuStack
相关产品推荐
相关产品推荐

