Lex中的操作可以訪問各個正則表達式組嗎? (注:我猜不是,因爲組字符 - 括號 - 是根據documentation用來改變優先級的,但是如果是這樣,你推薦一個替代的C/C++掃描生成器嗎?又不是在寫我自己的詞法分析器,真的很熱)Lex中的操作可以訪問各個正則表達式組嗎?
例:
比方說,我有這樣的輸入:foo [tagName attribute="value"] bar
,我要提取使用萊克斯/ Flex的標籤。我當然可以寫出這條規則:
\[[a-z]+[[:space:]]+[a-z]+=\"[a-z]+\"\] printf("matched %s", yytext);
但是讓我們說我想訪問字符串的某些部分,屬性,但不必再次解析yytext(因爲字符串已經被掃描過,所以再次掃描它的一部分並沒有意義)。所以這樣的事情會更好(正則表達式組):
\[[a-z]+[[:space:]]+[a-z]+=\"([a-z]+)\"\] printf("matched attribute %s", $1);