PHP Regex提取度量大小


PHP Regex to extract metric sizes

我正试图从字符串中提取一些度量大小,例如:

示例:

$s1=" foobar 10mm bar"              // 10mm
$s2=" foobar 10-300ml barbr"        // 10-300ml
$s3=" foobar 25 - 70 cm foo"        // 25-70cmm

我该怎么做?

我已经试过了:

$sizes_volume_distance_markers = array('mm','ml','l','cm');
static  $pattern_final_voldist;
    if(!$pattern_final_voldist)
    {
        $pattern_final_voldist =   implode("|",self::$sizes_volume_distance_markers);
    }
if(preg_match_all("/(['d.-]{1,4}['s.-]{0,2}($pattern_final_voldist) {1,2})+/i",$str,$vvalues))
       {
              var_dump($vvalues);
       }

应该可以,在最后一个括号中添加其他后缀:

/('d+'s+?'-'s+?)?('d+)'s+?(mm|ml|cm)/gi

用法:

$source=" foobar 10mm bar   foobar 10-300ml barbr  foobar 25 - 70 cm foo" 
preg_match_all("/('d+'s+?'-'s+?)?('d+)'s+?(mm|ml|cm)/i",$source, $results);

如果你需要匹配浮动使用这个替代:

/('d+('.'d+)?'s+?'-'s+?)?('d+('.'d+)?)'s+?(mm|ml|cm)/gi