Sidebar

What is Greedy vs NonGreedy Regex.

0 votes
338 views
asked Nov 9, 2016 by brandon-w-8204 (33,270 points)

1 Answer

0 votes
In the below string if you do a standard greedy regex of <[\S|\s]*>" it will find the entire string. A non greedy regex "<[\S|\s]*?>" will only find the xml tags.
 
<sometag>asdfaf</sometag>
<sometag>asdfaf</sometag>
<sometag>asdfaf</sometag>
<sometag>asdfaf</sometag>
<sometag>asdfaf</sometag>
<sometag>asdfaf</sometag>
<sometag>asdfaf</sometag>
The ? in the nonGreedy regex defines it and nonGreedy.
 
Example using a javascript replace
 
//Create a Java String Note all qie functions message.getNode, qie.* functions return a Java string)
var value = new java.lang.String('<sometag>asdfaf</sometag>\n<sometag>asdfaf</sometag>\n<sometag>asdfaf</sometag>\n<sometag>asdfaf</sometag>\n<sometag>asdfaf</sometag>\n<sometag>asdfaf</sometag>\n<sometag>asdfaf</sometag>');
//Convert the java string to a javascript string
var javaScriptString = '' + value;
//do a greedy regex replace with the javascript replace
qie.debug('greedy replace:\n' + javaScriptString.replace(/(<[\S|\s]*>)/gm, ''));
//do a nonGreedy regex replace with a javascript replace
qie.debug('nongreedy replace:\n' + javaScriptString.replace(/(<[\S|\s]*?>)/gm, ''));
 
answered Nov 9, 2016 by brandon-w-8204 (33,270 points)
edited Nov 9, 2016 by brandon-w-8204
...