我有随机变量,例如:
Strip @ 489.000
Strip 1 @ 489.000
Strip 2 @ 589.000
我需要输出只是
[anything] @
之后的数字来给我:
489.000
489.000
589.000
如何使用 PHP 正则表达式实现这一点?
$string = ' Strip 1 @ 489.000';
$pattern = ' /(\s\S) @ (\d+)/i';
$replacement = '$3';
echo preg_replace($pattern, $replacement, $string);
要获取所有匹配项,请使用
if (preg_match_all('/\S\s@\s+\K\d+(?:\.\d+)?/', $text, $matches)) {
print_r($matches[0]);
}
要获得第一个匹配项,请使用
if (preg_match('/\S\s@\s+\K\d+(?:\.\d+)?/', $text, $match)) {
print_r($match[0]);
}
详情
\S
- 非空白字符\s
- 空格@
- 一个 @
字符\s+
- 1 个以上空格\K
- 匹配重置运算符\d+
- 1+ 位数字(?:\.\d+)?
- 一个点和 1 个以上数字的可选序列。请参阅 正则表达式演示。
从每行的开头替换为
@
符号,然后匹配 @
符号及其后面的空格。 用空字符串替换该匹配项。
代码:(演示)
$text = <<<TEXT
Strip @ 489.000
Strip 1 @ 489.000
Strip 2 @ 589.000
TEXT;
echo preg_replace('/^[^@]+@ /m', '', $text);
输出:
489.000
489.000
589.000