正则表达式匹配精确数量的浮点数

时间:2016-09-30 08:41:55

标签: python regex python-2.7

我有一个包含几个浮点(或整数)数字的字符串以及开头和结尾的随机内容。我想要一个只包含至少包含给定浮点数的字符串的正则表达式,并将第一个给定浮点数作为一组报告。

实施例: 让我们假设字符串必须包含正好6个浮点数。请记住,每个字符串在开头和结尾都包含随机内容,因此无法使用$^

5.13e12  4.5774  4.743E-1  .655E3               NO MATCH (only 4 float)
5.13e12  4.5774  4.743E-1  .655E3 1 2           MATCH (6 float -> all in 1 group)
5.13e12  4.5774  4.743E-1  .655E3 1 2 3 5 6     MATCH (6 first float in a group)

到目前为止,我详细阐述了以下内容

((\s*\d*\.?\d+[Ee]?[+-]?\d*){6})

但是这个也匹配少于6个浮点数的行。

编辑:经过多次测试后,接近我想要的正则表达式来自@Sebastian Proske。但是,当我尝试匹配9个花车时,电脑失速。阅读周围似乎是因为正则表达式试图匹配可以使用+和*形成的任何可能的组合。你对如何做到这一点有任何想法吗?

1 个答案:

答案 0 :(得分:0)

这个带有非正式群组的正则表达式应该适合您在每行中匹配至少6个数字:

(?:[+-]?\d*\.?\d+(?:E[+-]?\d+)?(?:\s+|$)){6}

RegEx Demo