有下列字符串:
(XXXX-2月16.41 )
(XXXXXXX-3月13.7 )
(XXXXXX-10月6.25 )
...
请问php中,如何用正则提取“月”后面的数字啊(位数不固定),或者提供下其他思路也可,谢谢!
在PHP中,你可以使用正则表达式来提取字符串中位数不确定的数字。下面是一个简单的示例:
```php function getMedian($str) { $str = preg_replace('/[^0-9]/', '', $str); // Remove all non-digit characters $str = preg_replace('/[-+]?[0-9]+(.[0-9]+)?$/', '$1', $str); // Remove non-digit characters $str = preg_replace('/[0-9]+/', '', $str); // Remove leading digit
$len = strlen($str);
if ($len % 2 == 0) {
$median = ($str[$len / 2 - 1] + $str[$len / 2]) / 2;
} else {
$median = $str[$len / 2];
}
return $median;
} ```
这个函数首先删除了字符串中的所有非数字字符,然后删除了所有非数字字符并移除了前一个数字的首字符(因为中位数是在前两个数字中取中间的那个)。然后,它计算了字符串的长度,并根据长度是奇数还是偶数来决定应该取中间的那个数字还是平均值。
例如,如果你调用getMedian("1234567890")
,它将返回567
,因为这是由前两个数字(1和2)和中间的那个数字(56)组成的。如果你调用getMedian("1234567890abc")
,它将返回1
,因为这是由前两个数字(1和2)和中间的那个数字(1)组成的。