"non-greedy" on quantified subpatterns +? *? {}?

Q

How turn off the the greediness of quantified subpatterns? I want the quantified subpattern to be matched the minimum number of times possible?

How to create a "non-greedy" quantified subpattern on this PHP script: if ($t=10): echo "Just started...!"; endif; if ($t=11): echo "Hungry!"; endif; if ($t=12): echo ""Ah, lunch-time!"; endif;?

✍: FYIcenter.com

A

You can turn off the "greedy" behavior of a quantified subpattern by adding '?' immediately after the quantifier. This will force the quantified subpattern to be matched the minimum number of times possible.

For example: when applying pattern /a+?a/ to "aaaa", the quantified subpattern /a+?/ will match the first character "a" followed by the next subpattern /a/ to match the second character "a". In other words,

(a+?)a   # matches 'aaaa' with $1 for first 'a', $2 for second 'a'

Another example:

(.+?).   # matches 'abcd' with $1 for 'a', $2 for 'c'

The regular expression to show a "non-greedy" quantified subpattern on the given PHP script:

(if .+? endif;)

if - matches 'if'
.+? endif; - matches the minimum number of s possible 
             while 'end if;' is at the end

Click the button to test this regular expression here online:

2013-01-26, 0👍, 0💬