DATA Step, Macro, Functions and more

Perl Reg Expression

Accepted Solution Solved
Reply
Contributor
Posts: 27
Accepted Solution

Perl Reg Expression

Hi 

 

I am trying to define 'a' that matches the following codes by using PRXPARSE: V250-V2509; V251-V2513; V254-V2549; V255-V259 

 

a= prxparse("/\b(V25[0-9]\b|\b(V250[1-9]\b|\b(V251[1-3])\b|\b(V254[0-9])\b/");

 

This generates an error message saying: 

 

 ERROR: Unmatched ( before HERE mark in regex m/\b(V25[0-9]\b|\b( << HERE V250[1-9]\b|\b(V251[1-3])\b|\b(V254[0-9])\b/

 

Can someone help me resolving this issue? 

 

Thanks in advance for your time!


Accepted Solutions
Solution
‎05-24-2016 02:49 PM
Respected Advisor
Posts: 4,651

Re: Perl Reg Expression

[ Edited ]

Try

 

a= prxparse("/\b(V250[1-9]?|V251[1-3]?|V254[1-9]?|V25[5-9])\b/");

 

 

PG

View solution in original post


All Replies
Solution
‎05-24-2016 02:49 PM
Respected Advisor
Posts: 4,651

Re: Perl Reg Expression

[ Edited ]

Try

 

a= prxparse("/\b(V250[1-9]?|V251[1-3]?|V254[1-9]?|V25[5-9])\b/");

 

 

PG
Contributor
Posts: 27

Re: Perl Reg Expression

Thank you so much for the quick reply! I just tried what you suggested and it ran! Quick question. So I've noticed that you tweaked a few things- you changed the order of the sequence (4 digits -> 3 digits instead of 3 digits ->4 digits) and I see question marks between [ ] and |. I am guessing the question mark did the trick?! 

 

You also changed the range from 0-9 to 1-9 etc. but I am guessing that's just a typo as it is irrevant to the question I was asking. Thanks so much!!!

 

 

 

 

 

Respected Advisor
Posts: 4,651

Re: Perl Reg Expression

? means none or one match. 

 

V250[1-9]? will match V250, V2501, V2502... V2509

 

V250[0-9]? will match V250, V2500, V2501, V2502 ... V2509

 

Your pick.

PG
Contributor
Posts: 27

Re: Perl Reg Expression

Oh I see. I noticed that the last one (V25[4-9]) does not have ? at the end, but I tried both w. and wo it and they returned the same result-  So what was the prob with my code then? I thought it was something to do w. 'V'.   Thanks again for your help!! 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 249 views
  • 0 likes
  • 2 in conversation