Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Help with placing the matches of a regex into an Array

by JavaFan (Canon)
on Apr 28, 2012 at 20:06 UTC ( #967859=note: print w/replies, xml ) Need Help??

in reply to Help with placing the matches of a regex into an Array

Replacing [.]+ with .+ appears to work. For now. But considering that you have a trailing /g, you are expecting multiple matches on a line.

Your pattern will never match more than once, due to the greedy .+. I suggest to use

as your pattern match.

Replies are listed 'Best First'.
Re^2: Help with placing the matches of a regex into an Array
by stevieb (Abbot) on Apr 28, 2012 at 20:39 UTC

    ahhhh, of course. Thanks JavaFan. In my example above, the /g isn't needed due to the fact I was reading a line at a time, but kept it in as I (correctly) assumed the OP would have multiple links in a scalar glob. Since I didn't test it as such though, I missed this bug.

    I'm far from an expert in regexes, so I'm wondering if using the non-greedy operator essentially does the same thing in this case... or is there possibly something else I am missing that you see?

      It depends on the data -- if the data is incorrectly formatted (a missing ' for instance), they may not do the same thing. And '.+?' has the tendency to be slower than '[^']+'. Usually, the more restrictive a pattern is, the faster: there's less opportunity to backtrack. There's much more commitment in '[^']+' then there is in '.+?': the former will always match two quotes in succession, and whatever is in between, regardless how the rest of the pattern looks like, but that's not the case with '.+?'; there's nothing stopping the .+? part to match quotes.

        Thank you for your explanation. I'm still working on bettering my understanding of the look-ahead/backtrack aspects when working with Perl regexs. You've made it very clear to me here with this example.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://967859]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2018-05-23 17:06 GMT
Find Nodes?
    Voting Booth?