Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
I'm a little new at regular expression and my use of them is in JavaScript, so please bear with me. There are several regular expressions that can be used to replace all <div class="blockqte">...</div> tag-pairs with <pre>...</pre>. The content of this particular <div> pair contains no other <div>'s but does contain <span> tag pairs. Of course, all <div>'s that don't have the class="blockqte" attribute are left alone.
By the way if there are better ways to do all this, I would much appreciate the advice and any clarifications. Thank you in advance.
The three regexp that I've designed to do this in JavaScript are:
Any one of these go with the statement:1. re = /<div class="blockqte">((?:[^<]|<\/?s)*)<\/div>/g; 2. re = /<div class="blockqte">((?:[^<]*|<\/?s)*)<\/div>/g; 3. re = /<div class="blockqte">((?:.|\n)*?)<\/div>/g;
My understanding and please correct me if I'm wrong, is that expression number 3 is inefficient since it leaves the grouping with each of its evaluations to check the remainder of the expression (i.e. </div>). However, in 1 and 2 the group is left only with the first failure in matching all of its alternatives. That seems to make 1 and 2 better choices and it's here that I'm not sure of the advantages of one over the other. Can any one help with this?str = str.replace(re, "<pre>$1</pre>");
By the way if there are better ways to do all this, I would much appreciate the advice and any clarifications. Thank you in advance.
Back to
Seekers of Perl Wisdom