Re: [asterisk-users] escaping regular expression

2009-02-04 Thread Klaus Darilion


D Tucny schrieb:
> 2009/2/4 Klaus Darilion  >
> 
> 
> 
> D Tucny schrieb:
>  > 2009/2/4 Klaus Darilion  
>  >  >>
>  >
>  > Hi!
>  >
>  > I am going nuts using REGEXP. I just want to verify if a variable
>  > contains a valid +E164 phone number.
>  >
>  > These, the the pattern is ^\+[0-9]+
>  >
>  > First I tried:
>  >
>  >   Set(pattern=^\+[0-9]+);
>  >   if (${REGEX("${pattern}" ${${var}})})
>  >
>  > but that does not work, the backslash is removed, as seen in
> the log
>  > file:
>  >
>  >   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345
>  > )
>  >
>  > So, meanwhile I tried to escape the backslash. I tried:
>  >   Set(pattern=^\\+[0-9]+);
>  >   Set(pattern=^\\\+[0-9]+);
>  >   Set(pattern=^+[0-9]+);
>  >
>  > But always the same result:
>  >
>  >   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345)
>  >
>  > How can I solve this problem?
>  >
>  >
>  > Try something like... pattern=^[+]\{1\}[0-9]+
> 
> Are you sure? The \ should be in front of the +
> 
> 
> Pretty sure...
> 
> exten => *56,1,NoOp("Starting regexp test")
> exten => *56,n,Set(pattern=^[+]\{1\}[0-9]+)
> exten => *56,n,Set(var=123456789)
> exten => *56,n,NoOp(${IF(${REGEX("${pattern}" ${var})}?"Match":"No 
> Match")}))
> exten => *56,n,Set(var=+123456789)
> exten => *56,n,NoOp(${IF(${REGEX("${pattern}" ${var})}?"Match":"No 
> Match")}))
> 
> 
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'NoOp'
> [Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing 
> [...@phonedefault:1] NoOp("SIP/*01-09bd8ff8", ""Starting regexp test"") 
> in new stack
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'Set'
> [Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing 
> [...@phonedefault:2] Set("SIP/*01-09bd8ff8", "pattern=^[+]\{1\}[0-9]+") 
> in new stack
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'Set'
> [Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing 
> [...@phonedefault:3] Set("SIP/*01-09bd8ff8", "var=123456789") in new stack
> [Feb  4 23:49:21] DEBUG[20518] func_strings.c: FUNCTION REGEX 
> (^[+]{1}[0-9]+)(123456789)
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is '0'
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is '"No Match"'
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'NoOp'
> [Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing 
> [...@phonedefault:4] NoOp("SIP/*01-09bd8ff8", ""No Match")") in new stack
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'Set'
> [Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing 
> [...@phonedefault:5] Set("SIP/*01-09bd8ff8", "var=+123456789") in new stack
> [Feb  4 23:49:21] DEBUG[20518] func_strings.c: FUNCTION REGEX 
> (^[+]{1}[0-9]+)(+123456789)
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is '1'
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is 'Match'
> [Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'NoOp'
> [Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing 
> [...@phonedefault:6] NoOp("SIP/*01-09bd8ff8", "Match)") in new stack
> 
> So, the \ is still stripped (ast_app_separate_args removes \), but, it 
> doesn't matter as the + is bracketed so it's not the first character 
> after the ^ and so regcomp doesn't fail...


Ah, the trick is to put the + into [], so it need not be escaped.

Thanks
Klaus


___
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] escaping regular expression

2009-02-04 Thread D Tucny
2009/2/4 Klaus Darilion 

>
>
> D Tucny schrieb:
> > 2009/2/4 Klaus Darilion  > >
> >
> > Hi!
> >
> > I am going nuts using REGEXP. I just want to verify if a variable
> > contains a valid +E164 phone number.
> >
> > These, the the pattern is ^\+[0-9]+
> >
> > First I tried:
> >
> >   Set(pattern=^\+[0-9]+);
> >   if (${REGEX("${pattern}" ${${var}})})
> >
> > but that does not work, the backslash is removed, as seen in the log
> > file:
> >
> >   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345
> > )
> >
> > So, meanwhile I tried to escape the backslash. I tried:
> >   Set(pattern=^\\+[0-9]+);
> >   Set(pattern=^\\\+[0-9]+);
> >   Set(pattern=^+[0-9]+);
> >
> > But always the same result:
> >
> >   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345)
> >
> > How can I solve this problem?
> >
> >
> > Try something like... pattern=^[+]\{1\}[0-9]+
>
> Are you sure? The \ should be in front of the +
>
>
Pretty sure...

exten => *56,1,NoOp("Starting regexp test")
exten => *56,n,Set(pattern=^[+]\{1\}[0-9]+)
exten => *56,n,Set(var=123456789)
exten => *56,n,NoOp(${IF(${REGEX("${pattern}" ${var})}?"Match":"No
Match")}))
exten => *56,n,Set(var=+123456789)
exten => *56,n,NoOp(${IF(${REGEX("${pattern}" ${var})}?"Match":"No
Match")}))


[Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'NoOp'
[Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing
[...@phonedefault:1] NoOp("SIP/*01-09bd8ff8", ""Starting regexp test"") in
new stack
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'Set'
[Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing
[...@phonedefault:2] Set("SIP/*01-09bd8ff8", "pattern=^[+]\{1\}[0-9]+") in
new stack
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'Set'
[Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing
[...@phonedefault:3] Set("SIP/*01-09bd8ff8", "var=123456789") in new stack
[Feb  4 23:49:21] DEBUG[20518] func_strings.c: FUNCTION REGEX
(^[+]{1}[0-9]+)(123456789)
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is '0'
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is '"No Match"'
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'NoOp'
[Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing
[...@phonedefault:4] NoOp("SIP/*01-09bd8ff8", ""No Match")") in new stack
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'Set'
[Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing
[...@phonedefault:5] Set("SIP/*01-09bd8ff8", "var=+123456789") in new stack
[Feb  4 23:49:21] DEBUG[20518] func_strings.c: FUNCTION REGEX
(^[+]{1}[0-9]+)(+123456789)
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is '1'
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Function result is 'Match'
[Feb  4 23:49:21] DEBUG[20518] pbx.c: Launching 'NoOp'
[Feb  4 23:49:21] VERBOSE[20518] logger.c: -- Executing
[...@phonedefault:6] NoOp("SIP/*01-09bd8ff8", "Match)") in new stack

So, the \ is still stripped (ast_app_separate_args removes \), but, it
doesn't matter as the + is bracketed so it's not the first character after
the ^ and so regcomp doesn't fail...

d
___
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] escaping regular expression

2009-02-04 Thread Klaus Darilion


D Tucny schrieb:
> 2009/2/4 Klaus Darilion  >
> 
> Hi!
> 
> I am going nuts using REGEXP. I just want to verify if a variable
> contains a valid +E164 phone number.
> 
> These, the the pattern is ^\+[0-9]+
> 
> First I tried:
> 
>   Set(pattern=^\+[0-9]+);
>   if (${REGEX("${pattern}" ${${var}})})
> 
> but that does not work, the backslash is removed, as seen in the log
> file:
> 
>   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345
> )
> 
> So, meanwhile I tried to escape the backslash. I tried:
>   Set(pattern=^\\+[0-9]+);
>   Set(pattern=^\\\+[0-9]+);
>   Set(pattern=^+[0-9]+);
> 
> But always the same result:
> 
>   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345)
> 
> How can I solve this problem?
> 
> 
> Try something like... pattern=^[+]\{1\}[0-9]+

Are you sure? The \ should be in front of the +

klaus

___
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] escaping regular expression

2009-02-04 Thread D Tucny
2009/2/4 Klaus Darilion 

> Hi!
>
> I am going nuts using REGEXP. I just want to verify if a variable
> contains a valid +E164 phone number.
>
> These, the the pattern is ^\+[0-9]+
>
> First I tried:
>
>   Set(pattern=^\+[0-9]+);
>   if (${REGEX("${pattern}" ${${var}})})
>
> but that does not work, the backslash is removed, as seen in the log file:
>
>   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345
> )
>
> So, meanwhile I tried to escape the backslash. I tried:
>   Set(pattern=^\\+[0-9]+);
>   Set(pattern=^\\\+[0-9]+);
>   Set(pattern=^+[0-9]+);
>
> But always the same result:
>
>   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345)
>
> How can I solve this problem?
>

Try something like... pattern=^[+]\{1\}[0-9]+

d
___
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

[asterisk-users] escaping regular expression

2009-02-04 Thread Klaus Darilion
Hi!

I am going nuts using REGEXP. I just want to verify if a variable 
contains a valid +E164 phone number.

These, the the pattern is ^\+[0-9]+

First I tried:

   Set(pattern=^\+[0-9]+);
   if (${REGEX("${pattern}" ${${var}})})

but that does not work, the backslash is removed, as seen in the log file:

   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345 
)

So, meanwhile I tried to escape the backslash. I tried:
   Set(pattern=^\\+[0-9]+);
   Set(pattern=^\\\+[0-9]+);
   Set(pattern=^+[0-9]+);

But always the same result:

   func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345)

How can I solve this problem?

Thanks
Klaus

___
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users