Fundamentals 4 min read

Master Python Regex: Greedy vs Non‑Greedy Patterns Explained

This article walks through the difference between greedy and non‑greedy regular expression patterns in Python, shows practical code examples, visual output, and even demonstrates how to use named groups for more precise matching.

Python Crawling & Data Mining
Python Crawling & Data Mining
Python Crawling & Data Mining
Master Python Regex: Greedy vs Non‑Greedy Patterns Explained

Introduction

Hello, I’m PiPi. Recently a fan asked a question about Python regular expressions, specifically the greedy and non‑greedy modes, which sparked a lively discussion. I’m sharing the details here for everyone to learn.

Solution Process

Below is a solution provided by the expert Xiao Wang, including a sample code snippet.

import re

txt = "This is an HTML tag: <head>HEADER</head>. It means the head of the whole HTML document."
pattern1 = re.compile(r"<.*>")
pattern2 = re.compile(r"<.*?>")
result1 = re.findall(pattern1, txt)
result2 = re.findall(pattern2, txt)
print(result1)
print(result2)

The output is shown in the following image:

Explanation: The goal is to match the data inside HTML tags, i.e., the content between < and >. The two patterns differ only by a trailing ?, but the effect is significant.

The greedy pattern matches as much as possible, while the non‑greedy pattern stops at the first closing bracket.

Bonus: Named Groups

Here is an alternative using named groups for clearer matching.

import re

txt = "This is an HTML tag: <head>HEADER</head>. It means the head of the whole HTML document."

tag = re.compile(r"<(?P<tag_mark>[A-Za-z0-9]+)>.*?</(?P=tag_mark)>.*")
print(re.findall(tag, txt))

Conclusion

This article, based on a fan’s question, explains the greedy and non‑greedy modes of Python regular expressions, provides code demonstrations, and shows how to use named groups for more precise matches.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Pythonnon-greedyre moduleNamed Groupsgreedy
Python Crawling & Data Mining
Written by

Python Crawling & Data Mining

Life's short, I code in Python. This channel shares Python web crawling, data mining, analysis, processing, visualization, automated testing, DevOps, big data, AI, cloud computing, machine learning tools, resources, news, technical articles, tutorial videos and learning materials. Join us!

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.