Non-greedy quantifiers are an important aspect of regular expressions, which control the behavior of matches for repeated patterns. In this tutorial, we will introduce the concept of non-greedy quantifiers in regular expressions, explain how they work, and demonstrate how to use them in Python. By the end of this tutorial, you will have a clear understanding of non-greedy quantifiers and how they can be applied in your own Python scripts.

Regex Non-Greedy (or Lazy) Quantifiers :

  • Normally, by default, regular expressions in Python try to match the longest substring possible.
  • However, there are situations where you might want to use a non-greedy or lazy quantifier to match the shortest possible substring instead.
  • To use non-greedy quantifiers, add a  to the end of the regular expression quantifier.
  • Non-Greedy quantifiers try to match the shortest possible substring that satisfies the regular expression pattern.
  • Python Regex Non-Greedy Quantifiers Example
  • Code Sample :

import re
text = "fruit:apple, fruit:banana, fruit:cherry"
pattern = r"fruit:(.*?),"
result = re.findall(pattern, text)
  • Explanation :
  • In the above example, the regular expression is seeking to match for all fruit and extract each as a group.
  • The  .*?  non-greedy quantifier means it will match the shortest substring possible that satisfies the expression pattern which is "apple" in the above example.
  • After finding a match, the regular expression proceeds to the next comma and looks for the next possible match.
  • The function  re.findall()  searches the whole string and returns the list of matches in this case, which is  ["apple", "banana", "cherry"] .

Prev. Tutorial : Greedy Quantifiers

Next Tutorial : Sets & Ranges