首页 > 解决方案 > Python正则表达式 - 提取浮点模式

问题描述

我正在尝试从字符串中提取特定的“浮点数”,它包含多个格式化的“整数”、“浮点数”和日期。所讨论的特定“浮动”由一些标准化文本主持。

字符串示例

my_string = """03/14/2019 07:07 AM
Soles in mDm : 2864.35⬇
BTC purchase in mdm: 11,202,782.0⬇
"""

我已经能够从 , 中提取所需的浮点模式,2864.35my_string如果这个特定的浮点模式发生变化或出现另一个具有相同格式的浮点数,我的脚本将不会返回所需的结果

regex = r"(\d+\.\d+)"
matches = re.findall(regex, my_string)
for match in matches:
    print(match)

正则表达式的期望返回regex

仅在字符串的第二行中所需浮点数的一些差异

您在下面看到的是同一行的三个示例,即 中的第二行my_string尽管有任何变化,例如鞋底鞋底,正则表达式应该只能返回第二行

regex非常感谢编辑或重写当前正则表达式的任何帮助

标签: pythonregexpython-3.x

解决方案


编辑 - 嗯......如果它必须遵循,soles那么希望这会有所帮助

试试这些,当然我的控制台不能接受额外的字符,但根据您的输入:

>>> my_string = """03/14/2019 07:07 AM
Soles in mDm : 2864.35
BTC purchase in mdm: 11,202,782.0
Soles in mDm : 2864.35
soles MDM: 2,864.35
Soles in mdm :2,864.355
"""


>>> re.findall('(?i)soles[\S\s]*?([\d]+[\d,]*\.[\d]+)', my_string)

#Output
['2864.35', '2864.35', '2,864.35', '2,864.355']



>>> re.findall('[S|s]oles[\S\s]*?([\d]+[\d,]*\.[\d]+)', my_string)

#Output
['2864.35', '2864.35', '2,864.35', '2,864.355']

推荐阅读