1

我尝试创建正则表达式来提取所有整数。提取非整数的实数可以是6 -12bur also+6.000-5,0and onother ,例如3.14, -6,26but no 5.0

为了查找整数,我尝试过"^[+-]?([0-9]+)(\\[.,]0{1,})?$",但它不适用于-6.00. 而且我不知道如何创建第二个正则表达式(如何排除带有逗号或点的整数,然后是零)。任何帮助表示赞赏。

4

1 回答 1

3

您的整数正则表达式的问题似乎是反斜杠。我不知道任何正则表达式引擎,您需要在其中转义字符类的左括号,并且您当然不想匹配文字反斜杠。此外,对于完全理解它的正则表达式引擎来说,量词{1,}是一种更丑陋、更复杂的说法+

这应该做你的整数匹配:

"^[+-]?[0-9]+([.,]0+)?$"

这种变化应该做你的非整数匹配:

"^[+-]?[0-9]+[.,]0*[1-9][0-9]*$"

在这两种情况下,我都省略了表达正确模式不需要的括号,但是如果您需要捕获部分匹配项,那么您将需要重新添加一些。如果您还想将分组括号转换为非捕获形式正在使用支持它的正则表达式引擎。

此外,根据您的示例,实数模式在分数分隔符之前至少需要一位数字。将模式转换为也匹配表单.1-.17. 类似地,如果有小数分隔符,整数模式要求小数部分至少有一个零,并且也可以删除限制。

于 2014-12-04T20:09:59.433 回答