我正在实现一个编译器,我想做的一件事是使用“+”连接字符串,例如:
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”'的不带引号的“dear”。
关于c - 正则表达式匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21025157/