This is a "further" question re the replies from moritz and Marshall.
And in following their answers, I found it helpful to remember that "greedy" is not the same as "global." While (b*) is greedy, it is not global, /(b*)/g. In other words (I thought) /(b*)/ stops after the first (moritz caught this)failure success , at the start of the string, whereas adding the /g would tell the regex engine to keep on trying until it reaches the end of the string.
Well, that was my second thought.
But, OOOPS,
"abbbbc"=~/(b*)/g && print "Found: $1"; # Found:
Huh?
Well, is this a case where the rules are different in substitution?
my $string1 = "abbbbc"; my $found1 = $string1 =~ s/(b*)/^/g; print "\$string1: $string1, \$found1: $found1"; $found1 is 4 =head after s/// $string: ^a^^c^ At begin of string ...no "b" found | # satisfies "0 or more 'b's" "a" (duh!) | Two "b"(s) found | # likewise; the first and second 'b's ar +e conflated? and again | "c" | no "b" after "c" | =cut
That this code produces two replacements for the string of four 'b's remains a puzzle. Why does this appear (this may be my error) that the regex conflates two 'b's rather than all four?
Enlightenment?
or Coffee?
Update: Wonderful answer below. s/failure/success/ per moritz; italics closed per ssandv.
In reply to Re: Greediness of * vs. greediness of +
by ww
in thread Greediness of * vs. greediness of +
by rovf
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |