匹配正则表达式中的单位

时间:2013-12-17 19:27:01

标签: php regex units-of-measurement

如果我的句子中有句子和单位,我需要提取单位。

  • 有10Ku笔
  • 10ku的笔
  • 我有10Mu笔每个1美元
  • 你有1000支笔,每支5支
  • 1ku pens
  • 1笔

单位可以是Ku,ku,K,Mu,M,m,k或根本没有单位。

我想提取数量和单位。对于上述问题,结果应为:

  • 10,Ku
  • 10,ku
  • 10,Mu
  • 1000,null
  • 1,ku
  • 1,null

    $pattern = '/(\d+)\s*(M|m|K|k|t|T)*/';      
    preg_match_all($pattern, $sentence, $qty);
    
    $parsed['qty'] = $qty[1][0];
    $parsed['units'] = $qty[2][0];
    

谢谢,

1 个答案:

答案 0 :(得分:0)

Correct regexp

([0-9]+)([A-Z][a-z])*

Sample code

foreach($input as $test)
{
  if(preg_match('#([0-9]+)([A-Za-z]*)#', $test, $matches))
    echo $matches[1] . ' - ' . ($matches[2] ?: 'NULL') . "\n";
}

输出:

10 - Ku
10 - ku
10 - Mu
1000 - NULL
1 - ku
1 - NULL