字段未被读取为字符串

时间:2013-01-31 01:59:32

标签: sas

解决。见脚注。

            /*check regex*/
            go = 1; 
            i = 1; 
            do while (go = 1);
                set braw.regex point = i;
                    if (upcase(fname) = upcase("&var.")) then do;

                        put format1 " one"; /*format1 is a field of braw.regex, properties says character length 30*/
                        if format1 = '/\d{8}/' then put 'hello world one'; else put 'good bye world one';
                        %check1(&data, format1, &var) 


                    end;
                    else i = i+1;  

            end;

      /*check1 passes regex, string, true false to check_format*/
%macro check_format(regex, string, truefalse);

    pattern = prxparse(&regex.);
    truefalse = prxmatch(pattern, &string); 
    put &regex " " &string " " &truefalse "post";
%mend;

很抱歉没有缩进 - stackover flow似乎是错误的东西。

此输出

 /\d{8}/ one
good bye world one

显然格式不是字符串。所以它失败了prxparse,因为它正在寻找一个字符串输入。 知道我做了什么吗?

我以为我可以使用宏变量在它周围加上引号,也许使用:

call symput('mymacrovar', format1);
%let mymacrovar = "&mymacrovar"; 

但是这个问题什么也没做。

解决: 它被读作一个字符串。在正在读取正则表达式数据集的CSV文件中,逗号之间有额外的空格,使得字符串'/ \ d {8} /'与prxparse不同。

1 个答案:

答案 0 :(得分:0)

被读作字符串。在正在读取正则表达式数据集的CSV文件中,逗号之间还有其他空格,使得字符串' _ / \ d {8} /' (下划线表示空格)prxparse并不喜欢。