我正在实现一个编译器,我想做的一件事是使用'+'进行字符串连接,例如:

str_cnct = "hi" + "dear"


因此,现在的值是“ hidear”。

问题是我的正则表达式在flex中直接将其全部捕获为一个字符串,给出“ hi + dear”。
我当前的正则表达式是:\".*\"

{string}                {
                            yylval.struct_val.val.chain = (char *)malloc(sizeof(char)*yyleng);
                            strncpy(yylval.struct_val.val.chain,yytext,yyleng);
                            remove_char(yylval.struct_val.val.chain);
                            yylval.struct_val.length = yyleng;
                            yylval.struct_val.line = yylineno;
                            yylval.struct_val.column = columnno + yyleng + 2;
                            printf("--- String: %s\n", yylval.struct_val.val.chain);
                            return(STRING);
                    }


如何避免这种情况,并先以“ hi”然后再以“ +”为运算符,然后是“ dear”?

提前致谢

最佳答案

尝试如下操作:

^\"([^\"]*)\"\s*\+\s*\"([^\"]*)\"$


$ 1将捕获不带引号的“ hi”,而$ 2将捕获不带引号的字符串“ hi” +“ dear”'。

关于c - 正则表达式匹配字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21025157/

10-12 05:46