我正在用詞法分析器測驗一些東西,并撰寫了這個正則運算式規則:
[0-9([a-b])[c-f]] ;
根據這個檔案,這相當于:
[0-9a-f()] ;
例如,以下字符類都是等效的:
[[:alnum:]]
[[:alpha:][:digit:]]
[[:alpha:][0-9]]
[a-zA-Z0-9 ]
但這給了我錯誤:
my_lexer.l:56:不平衡括號
令人驚訝的是,這條規則不會給出同樣的錯誤!
[0-9([a-b][c-f]] ;
有人可以告訴我哪里錯了..我使用的是win_flex v2.6.4
uj5u.com熱心網友回復:
在字符類中,除了\、]和之外,沒有任何字符具有特殊意義-。(但見下文。)所以[0-9([a-b])[c-f]]從字符類[0-9([a-b](數字、字母a和b和符號(和[)開始。下一個字符是不平衡的右括號,這是一個錯誤。
您可能被 Posix 字符類的語法誤導了。該序列[:在字符類中是特殊的,但這不適用于 a[后跟 a :。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/460596.html
上一篇:使用正則運算式后設定新值
