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


How can I extract the number before "PS" (case-insensitive)?

我有一个字符串,它看起来像这样:

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

分别得到501, 20, 50 and 334。换句话说:digitPSps前面(不区分大小写)。

我累了,但不是所有情况下都有效,如上面所示:

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

我如何改变我的代码工作为每一个可能的字符串如上所示?

使用这个正则表达式:

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

解释:

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

标记:

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