I cannot figure out the following seemingly trivial regex, so I hope some wisdom can be dispensed...
I have a 4-char string, consisting of 'abc' plus a closing newline.
When matching until the end of the string, I get a different result when using '.*$' vs '.*?$': in the first case the closing newline is included, in the second, it is not. Note that /s is being used.
I am mystified how the end of the string can be interpreted different in these regexes, but apparently it is.
What am I missing here?
When the closing char is not a newline, the results are identical, as expected.
This in in Perl v5.14.4 (no options to use a different version).
Thanks much in advance for guidance!
$s = "abc\n"; if ($s =~ /(ab.*?)$/s) { $p = substr($s, @-[1], (@+[1] - @-[1])); print("match A=[$p] length=".length($p)."\n"); } if ($s =~ /(ab.*)$/s) { $q = substr($s, @-[1], (@+[1] - @-[1])); print("match B=[$q] length=".length($q)."\n"); } result: match A=[abc] length=3 match B=[abc ] length=4
In reply to Regex not matching closing newline? by rverscho
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |