Quantifiers

suggest change

Quantifiers allows to specify count of repeated strings.

/a?/
/a*/
/a+/
/a{2,4}/ # Two, three or four
/a{2,}/  # Two or more
/a{,4}/  # Less than four (including zero)

By default, quantifiers are greedy, which means they take as many characters as they can while still making a match. Normally this is not noticeable:

/(?<site>.*) Stack Exchange/ =~ 'Motor Vehicle Maintenance & Repair Stack Exchange'

The named capture group site will be set to ’‘Motor Vehicle Maintenance & Repair’ as expected. But if ‘Stack Exchange’ is an optional part of the string (because it could be ‘Stack Overflow’ instead), the naive solution will not work as expected:

/(?<site>.*)( Stack Exchange)?/

This version will still match, but the named capture will include ‘Stack Exchange’ since \* greedily eats those characters. The solution is to add another question mark to make the \* lazy:

/(?<site>.*?)( Stack Exchange)?/

Appending ? to any quantifier will make it lazy.

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents