[sr-dev] dialplan and empty repl_exp

Daniel-Constantin Mierla miconda at gmail.com
Mon May 7 22:47:36 CEST 2012


Hello,

On 5/7/12 8:57 PM, Juha Heinanen wrote:
> Richard Fuchs writes:
>
>> I know that, but that doesn't answer my question. :) Regex substitutions
>> work the same everywhere, s/(.)/\1/ in sed or Perl for example leaves
>> the string unchanged. Why is the dialplan module different?
> are you sure that (.) does the trick? i have used (.*) and that works ok.
indeed the .* is at least the posix standard way to match everything, 
'.' being for matching one single character.

Replacements in configuration file/dialplan do not use external library 
for substitution, only for matching (posix regexp for core/textops which 
is in libc and libpcre for dialplan). The replacement itself is made via 
a function from the core (iirc, Andrei Pelinescu-Onciul implemented it 
in the very early days of ser).

I am not that familiar with perl/sed and their full substitution rules, 
but in Kamailio, practically the subst_exp is supposed to break the 
matched value in tokens and then back-references in repl_exp can be used 
to build the new value.

Maybe I got used to this kind of model, to group parts of matches values 
and everything went fine for me.

For what Andreas exemplified in the first email in this thread, I would 
have used:

subst="^999(.*)"
repl="\1"

I would consider a bug if there is no way to remove the full value 
(i.e., set the result to empty string), like no change will happen with:
subst="(.*)"
repl=""

Personally, I would not mind an update to get to a more common 
behaviour, if it will be properly documented and referenced to other 
well established languages/tutorials. So far the term was 'perl-like 
substitutions' not 'perl substitutions' more for syntax/idea. Also, we 
have our specific behaviour, the repl expression can include cfg 
variables (e.g., $avp(...), $var(...), ...) that are expanded when 
building the result.

However, I think it is too late for 3.3.0, because it will introduce lot 
of changes, perhaps many in the behaviour as well, and we are already 2 
weeks in the testing phase.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda




More information about the sr-dev mailing list