正则表达式匹配由空格分隔的多个坐标

时间:2016-10-22 16:51:12

标签: c++ regex validation input

我正在尝试为我的项目学习正则表达式我正在努力将其用于输入验证,因为我被告知使用正则表达式是进行输入验证的最佳方法之一。

所以,我试图确保一个字符串包含一个由空格分隔的未知数量的坐标。输入结果的示例是-2.3,2 34,-2 -2.3,2\n我不确定它是否重要,但最后一个坐标将始终与第一个坐标匹配。不能有任何符号或无关的空格或逗号。只有十进制数字用逗号分隔,后跟空格或结束字符。

我意识到这可能是一个非常复杂的表达方式,而且我几乎都是盲目进入正则表达式,所以对此的任何帮助都会非常感激。如果改变了什么,我用c ++编程。感谢。

修改

我忘记了负数和换行符的可能性。我也接受输入中的负数和换行符。 所以输入d_iff = np.empty(shape=(1000,1000), dtype="float") for i in range(1000): for j in range(1000): d_iff [i,j] = np.square(((df.car[i] - df.car[j])/0.5)) + np.square (((df.table[i] - df.table[j])/10)) 是可以接受的。感谢大家到目前为止的帮助。

1 个答案:

答案 0 :(得分:1)

你可以试试这个正则表达式:

^\d+(?:\.\d+)?,(?:\d+(?:\.\d+)? \d+(?:\.\d+)?,)*\d+(?:\.\d+)?$

在这里演示:

Regex101

注意:正则表达式\d+(?:\.\d+)?匹配任何数字,可能有一个小数组件。括号内的?:将数量标记为非捕获组。这告诉正则表达式引擎不捕获内部的内容,因为我们不想在这里实际捕获任何内容。这可能会产生更高效的正则表达式。