如何在" PS"之前提取数字? (不区分大小写)?

时间:2015-07-15 02:03:36

标签: php regex string preg-match

我的字符串看起来像这样:

)250 W (501 PS
20 ps
50 ps
LPG)                                  246 kW (334 PS

我想分别得到501, 20, 50 and 334。 换句话说:digitPS之前的ps(不区分大小写)。

我厌倦了这一点,但并不适用于所有情况,如上所示:

$str = 'LPG)                                  246 kW (334 PS';
preg_match('/\d+(.*?)PS/',$str, $m);
print_r($m);

如何更改我的代码以适用于每个可能的字符串,如上所示?

1 个答案:

答案 0 :(得分:2)

只需使用此正则表达式:

/(\d+)\s*ps/i

说明:

  • 第一个捕获组(\ d +)
  • \ d + 匹配数字[0-9]
    • 量词: + 在一次和无限次之间,尽可能多次,根据需要回馈[贪婪]
  • \ s * 匹配任何空格字符[\ r \ n \ t \ f]
    • 量词: * 在零和无限次之间,尽可能多次,根据需要回馈[贪婪]
  • ps 匹配字符ps字面意义(不区分大小写)

国旗:

  • i 修饰符:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的情况)