正则表达式。只查找整数

时间:2013-08-21 21:03:21

标签: regex nsregularexpression

只查找数学等式中的整数...

5 + 5.5 + 6 / 2.0

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

我尝试了\ b \ d + \ b但找到了所有数字

3 个答案:

答案 0 :(得分:3)

如果正则表达式引擎支持,则可以使用负向lookbehind和lookahead。正则表达式为:

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

lookbehind确保数字字符串不以.开头,因此.5之类的内容不会匹配。前瞻确保数字字符串不会以.结尾,因此5.将不会匹配。

答案 1 :(得分:0)

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

[^\.]([0-9]+)\s

答案 2 :(得分: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(我添加了一些较长的数字以确保它有效)