[OpenSIPS-Users] An obstacle with using variables in regular expression

Răzvan Crainea razvan at opensips.org
Wed Feb 19 14:41:56 EST 2020


Hey, Donat!

You're welcome :D
But you should actually thank liviuc, as he wrote the correct snippet - 
I used the wrong operator ~= instead of the correct one =~ :)

Cheers!
Răzvan

On 2/19/20 4:37 PM, Donat Zenichev wrote:
> Hi Răzvan!
> Thank you that you spent your time on this.
> 
> Your way worked out and the check now works as intended.
> I can't thank you enough, really appreciate this.
> 
> Have a nice day!
> 
> On Wed, Feb 19, 2020 at 4:24 PM Răzvan Crainea <razvan at opensips.org 
> <mailto:razvan at opensips.org>> wrote:
> 
>     Hi, Donat!
> 
>     Your code is checking the variable with the "^$var(each)"
>     string/literal, the variable is not expanded within the quotes (like it
>     is done in php).
>     In order to fix this, you should do something like:
>     $var(regex) = "^" + $var(each);
>     if ($rU ~= $var(regex))
> 
>     Best regards,
>     Răzvan
> 
>     On 2/19/20 3:40 PM, Donat Zenichev wrote:
>      > Hi OpenSIPS community!
>      > I've come across one small obstacle, when trying to use pseudo
>     variables
>      > or attribute value pairs in regular expression.
>      >
>      > I believe my mistake should be quite simple.
>      >
>      > Regular expression is used in a condition:
>      > if ( $rU =~ "^$var(each)" )
>      >
>      > $var(each) - is a string variable, not integer. It contains certain
>      > prefix, like "44".
>      >
>      > For some reason OpenSIPS script is not able to get through this
>     check
>      > properly.
>      > But, in case I hardcode something like this:
>      > if ( $rU =~ "^44" )
>      > then it passes a check as needed.
>      >
>      > To my shame, I spent several hours trying to solve this in different
>      > ways, but without any success.
>      >
>      > I think that the problem consists of extra quotes appearing when
>      > $var(each) comes into play.
>      > So I have first quoting defined in a condition, they wrap regular
>     exp:
>      > ^$var(each)
>      > And when $var(each) is defined in a condition, it gets quotes
>     too, since
>      > it's a string.
>      >
>      > Of course I can use some other way to run this check, for example
>     with
>      > help of regex module.
>      > But my curiosity doesn't give me any chance to set this case aside.
>      >
>      > Any advice is appreciated!
>      >
>      > --
>      >
>      > Best regards,
>      > Donat Zenichev
>      >
>      >
>      > _______________________________________________
>      > Users mailing list
>      > Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>      > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>      >
> 
>     -- 
>     Răzvan Crainea
>     OpenSIPS Core Developer
>     http://www.opensips-solutions.com
> 
>     _______________________________________________
>     Users mailing list
>     Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>     http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> 
> 
> 
> -- 
> 
> Best regards,
> Donat Zenichev
> 
> 
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> 

-- 
Răzvan Crainea
OpenSIPS Core Developer
   http://www.opensips-solutions.com



More information about the Users mailing list