1

只求数学方程中的整数...

5 + 5.5 + 6 / 2.0

我想找到 5 和 6 而不是 5.5 或 2.0 要找到小数,我使用 \d+(.\d{1,})

我试过 \b\d+\b 但这找到了所有的数字

4

3 回答 3

4

如果您的正则表达式引擎支持,您可以使用负后瞻和前瞻。正则表达式将是:

(?<!\.)\d+(?!\.)

后视确保数字字符串不以 a 开头.,因此.5不会匹配类似的内容。前瞻确保数字字符串不以 a 结尾.,因此5.不会匹配。

于 2013-08-21T21:08:41.630 回答
0

您可以尝试查找所有没有“。”的数字。在前面,后面有空格,如下所示:

[^\.]([0-9]+)\s
于 2013-08-21T21:10:18.927 回答
0

可以试试这个:

/(?:^|[^\.])(\d+)(?:\s+|$)/

确保数字不以点开头,或者是字符串的开头,并确保数字后跟空格或字符串的结尾。

这是一个实际的 PHP 示例:

preg_match_all('/(?:^|[^\.])(\d+)(?:\s+|$)/', '5 + 5.5 + 6 / 2.0 + 33 * 16', $matches);
var_dump($matches);
/* Var Dump:
array (size=2)
  0 => 
    array (size=4)
      0 => string '5 ' (length=2)
      1 => string ' 6 ' (length=3)
      2 => string ' 33 ' (length=4)
      3 => string ' 16' (length=3)
  1 => 
    array (size=4)
      0 => string '5' (length=1)
      1 => string '6' (length=1)
      2 => string '33' (length=2)
      3 => string '16' (length=2)
*/

所以捕获的是 5、6、33 和 16(我添加了一些更长的数字以确保它有效)

于 2013-08-21T21:17:06.753 回答