in reply to Re^3: Return string that starts and ends with specific characters
in thread Return string that starts and ends with specific characters

... it also works with \b

... unless the string ends with the target character/pattern:

c:\@Work\Perl\monks>perl -wMstrict -le "my @answer; 'asdfgfhjkljx' =~ /f.*j(?{push @answer, $&})\b/; print for @answer; " fgfhjklj fgfhj fhjklj fhj c:\@Work\Perl\monks>perl -wMstrict -le "my @answer; 'asdfgfhjklj' =~ /f.*j(?{push @answer, $&})\b/; print for @answer; " fgfhjklj
Personally, I feel more comfortable using something that cannot possibly be true to force backtracking, like  (?!) or, from Perl 5.10 on,  (*FAIL) or  (*F) even though they take more keystrokes to type.

Update: Oops... I missed "... this special case (single word without a j at the end) ..." in Eily's post; see Eily's reply below.


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^5: Return string that starts and ends with specific characters
by Eily (Monsignor) on Jun 02, 2016 at 18:42 UTC

    ... unless the string ends with the target character/pattern
    That's why I said it only worked in this special case, not ending in j. But I agree with you, if you're not trying to golf, (*FAIL) is probably the best option, because it is far more explicit even if you've never seen the construct before. (?!) is still weird enough that you still need to check in the documentation if you don't recognize it, so that's still good.