Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: getting next word or number after another

by BillKSmith (Prior)
on Dec 18, 2020 at 03:25 UTC ( #11125387=note: print w/replies, xml ) Need Help??

in reply to getting next word or number after another

Refer to \G anchor in perlre
$string =~ /$word\s*?(\S+)/g; my $next_word = $1; $string =~ /\G\s*?(\S+)/g; my $next_word_2 = $1;

Replies are listed 'Best First'.
Re^2: getting next word or number after another
by AnomalousMonk (Bishop) on Dec 18, 2020 at 04:25 UTC

    The \G anchor does no harm, but is not necessary in the OPed example case (/g modifier causes match position to be preserved in void/boolean/scalar context):

    Win8 Strawberry (32) Thu 12/17/2020 23:11:18 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings my $string = " info info 100 - 2000 Kent"; my $word = "info"; $string =~ /$word\s*?(\S+)/g; my $next_word = $1; my $nwo = $-[1]; # offset of start of capture $string =~ /\s*?(\S+)/g; my $next_word_2 = $1; my $nwo_2 = $-[1]; print "The next word after $word is $next_word @ $nwo \n"; print "The next word or number after $next_word is $next_word_2 @ $nwo +_2 \n"; ^Z The next word after info is info @ 27 The next word or number after info is 100 @ 50
    (Repeated words are also handled properly with/without \G.)

    Give a man a fish:  <%-{-{-{-<

      Thanks for your comment. My interpretation of the document required the \G. I would still recommend using it because it calls attention to the /g on the first match which is there only for its effect on the second match.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11125387]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2021-04-10 21:18 GMT
Find Nodes?
    Voting Booth?

    No recent polls found