これは " " の貪欲さによるものです。次のように " ?
" を試してください+
。
$pattern = '/(?:\d+(?:\.\d+)?\D)+\d+(?:\.\d+)/';
$input = '34.27-15.44/8.44';
echo $input."\n";
preg_match($pattern, $input, $match);
print_r($match);
あなたの編集に関して:
$pattern = '/(?:\d+(?:\.?\d+)?\D)+\d+/';
$input = [
'1.0+2.5*5.4',
'5*8-4',
'5*8-4string',
'string5*8-4',
'string'
];
foreach($input as $string){
preg_match($pattern, $string, $match);
print_r($match);
}
それは与えます:
Array
(
[0] => 1.0+2.5*5.4
)
Array
(
[0] => 5*8-4
)
Array
(
[0] => 5*8-4
)
Array
(
[0] => 5*8-4
)
Array
(
)
私はあなたがそれを望んでいると思うので。
http://codepad.viper-7.com/4FoQnB