Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Re: Pattern match location finding

by feloniousMonk (Pilgrim)
on Feb 18, 2004 at 23:15 UTC ( [id://330088]=note: print w/replies, xml ) Need Help??


in reply to Re: Pattern match location finding
in thread Pattern match location finding

I'm seeing something I should have expected - for the given string "AABAABAA" and target "AABAA" my @offsets will have one element whose value = 0. I need it to contain 0 and 3...

I know what it's doing, when AABAA is matched, it moves on to the end of the match. What I really need is a sliding window type of match. It didn't dawn on me to explain this until I remembered how this works...

What it's doing:
*AABAA*BAA - matches here
AABAA*BAA regex continues at the asterisk,
but I want it to continure here:
A*ABAABAA
i.e., i guess you could say I need a single-width assertion...
--

Replies are listed 'Best First'.
Re: Re: Re: Pattern match location finding
by diotalevi (Canon) on Feb 19, 2004 at 00:01 UTC
    Reset pos() to 1 + $-[0] so you're ready for the next character then.
      You could also use a zero width lookahead. Just leave one character out of the zero width lookahead to increment pos().
      use strict; my $mystring = "AABAABAA"; my @array; {} while $mystring =~ /A(?=ABAA)(?{push @array, pos($mystring)})/g; print join(",", @array),"\n"; #or without any fancy "experimental" regex stuff @array=(); while ($mystring =~ /A(?=ABAA)/g) { push @array, pos($mystring) } print join(",", @array),"\n"; __OUTPUTS__ 1,4 1,4
      That is the 1 based position shown in the original post. If you want 0 based just use push @array, pos($mystring)-1

      --

      flounder

        That's a good idea. I don't think I recommended anything esperipmental thpogh.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (3)
As of 2024-03-28 17:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found