Regex 用点简化正则表达式 在C++中,我需要创建一个模式,该模式匹配十进制值,包括小数点之前或之后的至少一个数字。但是,小数点也是可选的

Regex 用点简化正则表达式 在C++中,我需要创建一个模式,该模式匹配十进制值,包括小数点之前或之后的至少一个数字。但是,小数点也是可选的,regex,Regex,应匹配的示例: 10 1 .123 123. 12.123 目前我有类似的东西,但需要更简单的 (\d+\.?)|(\.?\d+)|(\d+\.?\d+) 根据您的要求,您可以使用此正则表达式: ^(?:\d+\.?\d*|\.\d+)$ \d+\.?\d*将匹配不带小数点的数字或类似123.的数字或带小数点的数字 \。\d+将匹配以小数点开始的数字 根据您提供的信息,这是我所能简化的 (\d+\.?\d*)|(\d*\.?\d+) 我不确定这是否在C++中工作,但它在Java

应匹配的示例:

10  
1 
.123
123.
12.123
目前我有类似的东西,但需要更简单的

(\d+\.?)|(\.?\d+)|(\d+\.?\d+)

根据您的要求,您可以使用此正则表达式:

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

  • \d+\.?\d*
    将匹配不带小数点的数字或类似
    123.
    的数字或带小数点的数字
  • \。\d+
    将匹配以小数点开始的数字

根据您提供的信息,这是我所能简化的

(\d+\.?\d*)|(\d*\.?\d+)
<>我不确定这是否在C++中工作,但它在JavaScript或Python中也有例子。
注意:这将包括

请记住
字符是正则表达式中的特殊字符。你需要转义它。你使用过这个网站或谷歌的搜索功能吗?我以前用过“\”。但是堆栈溢出编辑器删除了它。编辑您可以使用:
^(?::\d+\.?\d*.\d+$
这也将匹配
不确定是否允许-将对答案进行编辑。我删除了我的建议,因为它仍然匹配单个
很高兴知道它成功了,
\d*\.?\d*