gpt4 book ai didi

c++ - 用于匹配以空格分隔的多个坐标的正则表达式

转载 作者:行者123 更新时间:2023-11-30 05:21:20 45 4
gpt4 key购买 nike

我正在尝试为我正在从事的项目学习正则表达式,以将其用于输入验证,因为有人告诉我使用正则表达式是进行输入验证的最佳方法之一。

因此,我试图确保一个字符串包含未知数量的坐标,这些坐标由空格分隔。输入的一个例子是 2,2 23.45,6 45,21.65 2,2 我不确定它是否重要,但最后一个坐标总是与第一个匹配。不能有任何符号或多余的空格或逗号。仅以逗号分隔的十进制数字,后跟空格或结束符。

我意识到这可能是一个相当复杂的表达式,而且我几乎是盲目地使用正则表达式,因此非常感谢任何对此的帮助。如果有任何改变,我正在用 C++ 编程。谢谢。

编辑:

我忘记了负数和换行符的可能性。我也接受输入中的负数和换行符。所以输入 -2.3,2 34,-2 -2.3,2\n 是可以接受的。感谢大家迄今为止的帮助。

最佳答案

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

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

此处演示:

Regex101

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

关于c++ - 用于匹配以空格分隔的多个坐标的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194643/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com