Python (re)

Lazy / Non-Greedy Quantifier in PY

Demonstrate lazy quantifiers `+?` by matching the SHORTEST HTML-like tag rather than the longest greedy span.

Try it in the PY tester →

Pattern

regexPY
<.+?>   (flags: g)

Python (re) code

pyPython
import re

pattern = re.compile(r"<.+?>")
input_text = "<b>bold</b> and <i>italic</i>"
for m in pattern.finditer(input_text):
    print(m.group(0))

Stdlib `re` module — no third-party dependency. Works on Python 3.6+.

How the pattern works

<.+?> matches an opening `<`, then ONE OR MORE characters (`.+`), then the next `>`. The `?` after `+` makes the quantifier lazy — it stops at the first `>` it sees, instead of the greedy default that would consume everything up to the LAST `>` in the string.

Examples

Input

<b>bold</b> and <i>italic</i>

Matches

  • <b>
  • </b>
  • <i>
  • </i>

Input

<div class="foo">x</div>

Matches

  • <div class="foo">
  • </div>

Input

no tags

No match

Same pattern, other engines

← Back to Lazy / Non-Greedy Quantifier overview (all engines)