I have random variable like:
Strip @ 489.000
Strip 1 @ 489.000
Strip 2 @ 589.000
I need the output to be only the number after [anything] @
to give me:
489.000
489.000
589.000
How to achieve this using PHP regex?
$string = ' Strip 1 @ 489.000';
$pattern = ' /(\s\S) @ (\d+)/i';
$replacement = '$3';
echo preg_replace($pattern, $replacement, $string);
To get all matches, use
if (preg_match_all('/\S\s@\s+\K\d+(?:\.\d+)?/', $text, $matches)) {
print_r($matches[0]);
}
To get the first match, use
if (preg_match('/\S\s@\s+\K\d+(?:\.\d+)?/', $text, $match)) {
print_r($match[0]);
}
Details
\S
- a non-whitespace char\s
- a whitespace@
- a @
char\s+
- 1+ whitespaces\K
- match reset operator\d+
- 1+ digits(?:\.\d+)?
- an optional sequence of a dot and 1+ digits.See the regex demo.