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
In reply to Re: Perl Regex
by kcott
in thread Perl Regex
by Buddyhelp
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |