.netregexregex-greedynon-greedy

RegEx: Smallest possible match or nongreedy match


How do I tell RegEx (.NET version) to get the smallest valid match instead of the largest?


Solution

  • For a regular expression like .* or .+, append a question mark (.*? or .+?) to match as few characters as possible. To optionally match a section (?:blah)? but without matching unless absolutely necessary, use something like (?:blah){0,1}?. For a repeating match (either using {n,} or {n,m} syntax) append a question mark to try to match as few as possible (e.g. {3,}? or {5,7}?).

    The documentation on regular expression quantifiers may also be helpful.