Is there a way to use ungreedy matching in JavaScript for regular expressions?
You can use ? after * or + to make it ungreedy, e.g. (.*?)
You can use ? after * or + to make it ungreedy, e.g. (.*?)
For non greedy match, try this <TD.*?>
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 … Read more
On greedy vs non-greedy Repetition in regex by default is greedy: they try to match as many reps as possible, and when this doesn’t work and they have to backtrack, they try to match one fewer rep at a time, until a match of the whole pattern is found. As a result, when a match … Read more
The non-greedy ? works perfectly fine. It’s just that you need to select dot matches all option in the regex engines (regexpal, the engine you used, also has this option) you are testing with. This is because, regex engines generally don’t match line breaks when you use .. You need to tell them explicitly that … Read more
Greedy will consume as much as possible. From http://www.regular-expressions.info/repeat.html we see the example of trying to match HTML tags with <.+>. Suppose you have the following: <em>Hello World</em> You may think that <.+> (. means any non newline character and + means one or more) would only match the <em> and the </em>, when in … Read more