我正在实现一个编译器,我想做的一件事是使用'+'进行字符串连接,例如:
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/