Greedy versus nongreedy matching : Regular Expressions « String « PHP






Greedy versus nongreedy matching

 
<?php
$html = '<em>love</em> you <em>.</em>';
// Greedy
$matchCount = preg_match_all('@<em>.+</em>@', $html, $matches);
print "Greedy count: " . $matchCount . "\n";
// Nongreedy
$matchCount = preg_match_all('@<em>.+?</em>@', $html, $matches);
print "First non-greedy count: " . $matchCount . "\n";
// Nongreedy
$matchCount = preg_match_all('@<em>.+</em>@U', $html, $matches);
print "Second non-greedy count: " . $matchCount . "\n";
?>
  
  








Related examples in the same category

1.Brackets [] finds a range of characters.
2.Character Classes
3.Complete list of regular expression examples
4.\b and \B, equate to "On a word boundary" and "Not on a word boundary," respectively.
5.^ and $ are line anchors.
6.Line Anchors
7.Match URL
8.Match an IP address
9.Match the smallest number of characters starting with "p" and ending with "t"
10.Matching GUIDs/UUIDs
11.Matching a Valid E-mail Address
12.Matching a Valid IP Address
13.Matching using backreferences
14.Matching with Greedy vs. Nongreedy Expressions
15.Matching with character classes and anchors
16.Matching with |
17.Define a pattern and use parentheses to match individual elements within it
18.Greedy Qualifiers
19.Greedy and non-greedy matching
20.Grouping captured subpatterns
21.Validating Pascal Case Names
22.Validating U.S. Currency
23.Validating a credit card number
24.Nongreedy Qualifiers
25.POSIX Regular Expressions Character Classes
26.POSIX Regular Expressions Character Classes
27.Ranges
28.Option patterns:
29.Predefined Character Ranges (Character Classes)
30.Pattern matches:
31.Pattern match extenders:
32.Perl-Compatible Regular Expressions (PCRE)
33.Qualifiers restrict the number of times the preceding expression may appear.
34.Quantifiers for Matching a Recurring Character
35.Quantifiers: +, *, ?, {int. range}, and $ follow a character sequence:
36.Special classes for regular expression
37.Regular expressions using character classes