in reply to Perl Regex
G'day Buddyhelp,
"Can some one please tell me how to get the values after the third piping (|) symbol without the plus signs"
First, anchor to the the start with a '^'.
You have three groups of 'not-pipe-characters' (i.e. [^|]*) followed by a single pipe character (i.e. \|). You can use non-capturing parentheses '(?:...)' specified '{3}' times.
The data you want is the next group of 'not-pipe-characters', so use capturing parentheses '(...)' here.
Finally, you can just split on '+' to get the values you want.
#!/usr/bin/env perl -l use strict; use warnings; my $data = '[-3|1|29x250+46+26|200+300+464|Get]... superfluous ...'; my $re = qr{^(?:[^|]*\|){3}([^|]*)}; if ($data =~ $re) { my @out = split /\+/ => $1; print "@out"; }
Output:
200 300 464
-- Ken
|
|---|