【发布时间】:2015-11-26 21:48:12
【问题描述】:
您好,我想检查正则表达式中的特定模式,但我没能做到。输入应该是这样的
名词 词名:词义
我成功获得了 noun 和 wordname,但无法为词义设计模式。我的代码是:
int state;
char *meaning;
char *wordd;
^verb { state=VERB; }
^adj { state = ADJ; }
^adv { state = ADV; }
^noun { state = NOUN; }
^prep { state = PREP; }
^pron { state = PRON; }
^conj { state = CONJ; }
//my try but failed
[:\a-z] {
meaning=yytext;
printf(" Meaning is getting detected %s", meaning);
}
[a-zA-Z]+ {
word=yytext;
}
示例输入:
noun john:This is a name
现在word 应该等于john 并且meaning 应该等于This is a name。
【问题讨论】:
-
也许你需要使用状态。在正常状态下,您分别对待每个单词。在“定义”状态下,当检测到“:”时输入,当检测到换行符时退出,您收集所有字符(换行符除外)来创建定义。
标签: flex-lexer lex