I am using PRXMATCH with a Perl regular expression(RegEx) in a WHERE clause in PROC PRINT. The RegEx includes a macro variable containing a drug list and one of these drug names includes a forward slash. I am getting an error even after using a escape character (back slash) in the RegEx. I would appreciate your help resolve the issue.
Partial SAS Log:
ERROR: Invalid characters "ATROP \//i" after end delimiter "/" of regular expression
"/Propantheline|Propoxyphene|Reserpine|Ticlopidine|Trimethobenzamide|DIPHEN/ATROP \//i".
* Create a macro variable of study drugs;
%let STUDY_DRUG_LIST = Propantheline|Propoxyphene|Reserpine|Ticlopidine|Trimethobenzamide|DIPHEN/ATROP;
* Create an example data set of prescription fills (patient ID and drug names) ;
Data work.pmed;
input dupersid: $10. rxname $20.;
datalines;
2320038102 NITROFURANTN
2320038102 EZETIMIBE
2320038102 Propantheline
2320040101 Reserpine
2320040101 Reserpine
2320040101 NOVOLOG
2320040101 NOVOLOG
2320040105 DIPHEN/ATROP
2320040105 DIPHEN/ATROP
2320040105 DIPHEN/ATROP
;
* List observations using PRXMATCH with a Perl regular expression in the WHERE clause (Study drug list);
proc print data=work.pmed;
where prxmatch ("/&study_drug_list2 \//i", rxname);
run;
You need to escape the slash:
%let study_drug_list = Propantheline|Propoxyphene|Reserpine|Ticlopidine|Trimethobenzamide|DIPHEN\/TROP;
You can do that on the fly if needed:
%let study_drug_list2 = %sysfunc(transtrn(&study_drug_list,/,\/));
Then:
where prxmatch ("/&study_drug_list2/i", RXNAME);
You need to escape the slash:
%let study_drug_list = Propantheline|Propoxyphene|Reserpine|Ticlopidine|Trimethobenzamide|DIPHEN\/TROP;
You can do that on the fly if needed:
%let study_drug_list2 = %sysfunc(transtrn(&study_drug_list,/,\/));
Then:
where prxmatch ("/&study_drug_list2/i", RXNAME);
Your revisions to my code have worked. Thanks,
It has worked. Thanks,
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Select SAS Training centers are offering in-person courses. View upcoming courses for: