Because lookaheads are "zero length" matches. That is they do not consume any of the string that they match. So, in your example,
1welcometo india. ^...............is matched and consumed by ([0-9]+) ^^^^^^^........is matched but not consumed by (?=welcome) ^..............so "to india" tries to match here and fails.
This does match though:
$str = '1welcometo india';; $str =~ m/([0-9]+)(?=welcome)welcometo india/ and print 'matched';; matched
It's called 'lookahead' because it looks ahead but doesn't travel there.
In reply to Re: Look Ahead:
by BrowserUk
in thread Look Ahead:
by nvivek
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |