<br><br><div class="gmail_quote">On Tue, Feb 16, 2010 at 3:01 AM, Olle E. Johansson <span dir="ltr">&lt;<a href="mailto:oej@edvina.net">oej@edvina.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
16 feb 2010 kl. 09.43 skrev Tzafrir Cohen:<br>
<div><div></div><div class="h5"><br>
&gt; On Mon, Feb 15, 2010 at 09:40:31AM -0700, Steve Murphy wrote:<br>
&gt;&gt; On Mon, Feb 15, 2010 at 8:25 AM, Lenz Emilitri &lt;<a href="mailto:lenz.loway@gmail.com">lenz.loway@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Yes but in any case you can enter all of the strings that reasonably match<br>
&gt;&gt;&gt; - even if you have variable-length numbers, you will be able to determine<br>
&gt;&gt;&gt; that a valid number be between 5 and 15 characters - or likely 2 to 20, all<br>
&gt;&gt;&gt; numbers. A number of 156 characters is very likely to be a problem.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; This is probably a stupid idea, because it could only be implemented in<br>
&gt;&gt; trunk, and won&#39;t help with current implementations,<br>
&gt;&gt; and I suggested it a long time ago already when I did the fast pattern<br>
&gt;&gt; matching code, but I don&#39;t THINK it would be all that<br>
&gt;&gt; hard to offer SOME regex syntax in patterns to help reduce the impact of<br>
&gt;&gt; these kinds of problems.<br>
&gt;&gt;<br>
&gt;&gt; Like using:<br>
&gt;&gt;<br>
&gt;&gt; [incoming-from-voip]<br>
&gt;&gt; exten =&gt; _X\{7-10\},1,Dial(${EXTEN}@incoming-from-voip-old)<br>
&gt;&gt;<br>
&gt;&gt; instead of :<br>
&gt;&gt;<br>
&gt;&gt; [incoming-from-voip]<br>
&gt;&gt; exten =&gt; XXXXXXX,1,Dial(${EXTEN}@incoming-from-voip-old)<br>
&gt;&gt; exten =&gt; XXXXXXXX,1,Dial(${EXTEN}@incoming-from-voip-old)<br>
&gt;&gt; exten =&gt; XXXXXXXXX,1,Dial(${EXTEN}@incoming-from-voip-old)<br>
&gt;&gt; exten =&gt; XXXXXXXXXX,1,Dial(${EXTEN}@incoming-from-voip-old)<br>
&gt;&gt;<br>
&gt;&gt; I put the \&#39;s in front of the {}&#39;s because we probably wouldn&#39;t want to<br>
&gt;&gt; change the<br>
&gt;&gt; behavior of exact matching, and there&#39;s some precedent for using such stuff<br>
&gt;&gt; in some implementations of regex, where \&lt; matches the beginning of a word,<br>
&gt;&gt; etc.<br>
&gt;&gt;<br>
&gt;&gt; and, of course there would be the shorthand variants \{7-\} for seven or<br>
&gt;&gt; more; \{-10\} for 1-10.<br>
&gt;&gt; Some might argue 0-10. Whatever.<br>
&gt;&gt;<br>
&gt;&gt; I THINK this could be implemented in both the fast pattern matcher and the<br>
&gt;&gt; current slow one. I know it wouldn&#39;t be that bad to do in the fast pattern<br>
&gt;&gt; matcher.<br>
&gt;&gt; I hadn&#39;t really given the slow one (the current one) much thought.<br>
&gt;<br>
&gt; I think it would be very useful. One small point:<br>
&gt;<br>
&gt; The &#39;.&#39; is short. This helps making it pupular. X\{1-\} is much less<br>
&gt; so.<br>
&gt;<br>
&gt; Another thing that I think would help: an equivalent of perl&#39;s \w:<br>
&gt; something similar to &#39;X&#39;, but also matches letters. This is syntactic<br>
&gt; sugar, but we need such sugar for readable dialplans.<br>
&gt;<br>
</div></div>Leif and I had a proposal years ago for an &quot;alphaexten&quot; that used perl regexps.<br>
<font color="#888888"><br></font></blockquote><div><br>Yes, I know that many have proposed full regex  and regex-like extensions for<br>the dialplan patterns, but there&#39;s one big rub. The current pattern matcher is light and<br>
fast compared to a full regex matcher.  The restrictions on constructs make it a fairly<br>fast linear matcher without any loops or recursive behavior to slow it down. We can currently use<br>rules to quantify the &quot;best match&quot; that makes it fairly predictable, and the work on a<br>
fast pattern matcher (O(log(pattern length))  instead of  O((num patterns)^2) was possible.<br><br>But, when you move to full regex approaches, you lose all those nice properties. You&#39;d have<br>to move to a &#39;best match first&#39; sort of strategy,  so you can move from a O(n^2) type scenario,<br>
and you lock yourself into an O(n^2/2) scenario. For large dialplans on a busy system, you are<br>totally screwed, without any hope of improving the situation. <br><br>I tried in times past to propose a subset of regex patterns that would still leave us with fast<br>
pattern matching....<br><br>murf<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font color="#888888">
/O<br>
</font><div><div></div><div class="h5">--<br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-users mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-users" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Steve Murphy<br>ParseTree Corp<br><br>