数式で整数のみを見つける...
5 + 5.5 + 6 / 2.0
5.5 や 2.0 ではなく、5 と 6 を見つけたい 小数を見つけるには \d+(.\d{1,}) を使用します
\b\d+\b を試しましたが、すべての数字が見つかります
数式で整数のみを見つける...
5 + 5.5 + 6 / 2.0
5.5 や 2.0 ではなく、5 と 6 を見つけたい 小数を見つけるには \d+(.\d{1,}) を使用します
\b\d+\b を試しましたが、すべての数字が見つかります
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.
「。」を持たないすべての数字を探すことができます。次のように、前に空白を置き、その後に空白を置きます。
[^\.]([0-9]+)\s
これを試すことができます:
/(?:^|[^\.])(\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 でした (確実に機能するように、より長い数字を追加しました)。