c - 正则表达式匹配字符串

标签 c regex flex-lexer

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

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/

相关文章:

c - Bridge mac 学习老化时间

java - Java 正则表达式中的空格

javascript - 替换css背景url

c - flexpath 添加不起作用

c - Yacc 找不到 YY_CURRENT_BUFFER

c - 有配置文件读/写C代码生成器吗?

c - 使用指针扫描指针数组

c - Makefile C Linux 错误

c - 如何在 OpenMP 中使用归约 vector 变量?

html - Swift Regex 从页面 html 中检索 token