Basically Corion's approach, but uses the \K operator available from Perl version 5.10 on:
Please see perlre, perlretut, and perlrequick.c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; my $str = qq{Wal-mart talks about its Significant Accounting Policies + in its 10k. \n} . qq{Significant Accounting Policies are important for a firm +. \n} . qq{Here is a list of the Significant Accounting Policies \n +} . qq{1)Lifo \n} . qq{2)Depreciation \n} . qq{3)Expenses \n} ; print qq{<<$str>> \n}; ;; my $sap = qr{ Significant \s+ Accounting \s+ Policies }xms; ;; my ($end_sap) = $str =~ m{ .* $sap \K .* }xmsg; print qq{<<$end_sap>> \n}; " <<Wal-mart talks about its Significant Accounting Policies in its 10k. Significant Accounting Policies are important for a firm. Here is a list of the Significant Accounting Policies 1)Lifo 2)Depreciation 3)Expenses >> << 1)Lifo 2)Depreciation 3)Expenses >>
Update: On second thought, I think I would write the statement
my ($end_sap) = $str =~ m{ .* $sap \K .* }xmsg;
as something like
my $sap_at_end = my ($end_sap) = $str =~ m{ .* $sap \K .* }xmsg;
so that the success of the match will be separately captured. This allows a
block to follow the match to let you handle any eventuality. I might also think about changing the $sap \K sequence to $sap \s* \K to consume any whitespace that might follow the $sap pattern before the "real" text begins.if ($sap_at_end) { do_something_with($end_sap); } else { ... }
Give a man a fish: <%-{-{-{-<
In reply to Re: Take last instance of a string
by AnomalousMonk
in thread Take last instance of a string
by porsche5k
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |