1

数式で整数のみを見つける...

5 + 5.5 + 6 / 2.0

5.5 や 2.0 ではなく、5 と 6 を見つけたい 小数を見つけるには \d+(.\d{1,}) を使用します

\b\d+\b を試しましたが、すべての数字が見つかります

4

3 に答える 3

4

You can use negative lookbehind and lookahead, if that's supported by your regular expression engine. The regular expression would be:

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

The lookbehind ensures that the string of digits does not begin with a ., so that something like .5 won't be matched. The lookahead ensures that the string of digits does not end with a ., so that 5. won't be matched.

于 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 に答える