在 PHP 正则表达式中提取数据使用字符串的十进制数和字符(使用单位)
Extract decimal number and character (usage units) of a data usage string in PHP regex
我有一个字符串,其中 returns 以 B、KB、MB 等为单位的数据使用情况。我想把它的数字和字符串部分分开。
例如:14.5 MB - 我想要 14.5 和 MB。
我尝试使用正则表达式
'/(\d+)(\w)/'
但没有给出想要的结果。
预期结果
Array( [0] => 14.5, [1] => 'MB' )
您可以尝试在此处使用 preg_match_all
和以下正则表达式模式:
\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b
这匹配(可能)十进制大小,后跟基于字节的单位。
$input = "Here are three sizes 14.5 MB, 10B, and 30.8 GB";
preg_match_all("/\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b/", $input, $matches);
print_r($matches[1]);
print_r($matches[2]);
这会打印:
Array
(
[0] => 14.5
[1] => 10
[2] => 30.8
)
Array
(
[0] => MB
[1] => B
[2] => GB
)
如果您确定您的字符串将始终在
之间包含 space,则可以使用 explode 函数
$consumedData = '14.5 MB';
$withSeperate = explode(' ',$consumedData);
var_dump($withSeperate);
输出
Array([0] => 14.5, [1] => 'MB');
我有一个字符串,其中 returns 以 B、KB、MB 等为单位的数据使用情况。我想把它的数字和字符串部分分开。
例如:14.5 MB - 我想要 14.5 和 MB。
我尝试使用正则表达式
'/(\d+)(\w)/'
但没有给出想要的结果。
预期结果
Array( [0] => 14.5, [1] => 'MB' )
您可以尝试在此处使用 preg_match_all
和以下正则表达式模式:
\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b
这匹配(可能)十进制大小,后跟基于字节的单位。
$input = "Here are three sizes 14.5 MB, 10B, and 30.8 GB";
preg_match_all("/\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b/", $input, $matches);
print_r($matches[1]);
print_r($matches[2]);
这会打印:
Array
(
[0] => 14.5
[1] => 10
[2] => 30.8
)
Array
(
[0] => MB
[1] => B
[2] => GB
)
如果您确定您的字符串将始终在
之间包含 space,则可以使用 explode 函数$consumedData = '14.5 MB';
$withSeperate = explode(' ',$consumedData);
var_dump($withSeperate);
输出
Array([0] => 14.5, [1] => 'MB');