0
我正在使用python模塊PLY編寫解析器,並且正在執行我正在執行的操作。我有一個簡單的規則來檢測字符串:flex(python PLY)字符串正則表達式
r'("|\').*("|\')'
當詞法錯誤拋出我有這樣的:
def t_error (t) :
print 'Illegal lexer input line ' + str(t.lineno) + ' ' + t.value[:16]
sys.exit(-1)
當我養活我的解析器以下輸入:
parse("preg_match('%^[\*\%]+$%', $keywords)")
我得到退回此回報:
Illegal lexer input line 1 %^[\*\%]+$%', $k
我的問題是:
1)爲什麼我不解析這個字符串?看來我的正則表達式應該正確處理這個字符串。
2)我該如何解決這個問題?
編輯:
我已經將問題縮小了一點。下面的字符串通過投身非法詞法分析器輸入錯誤:
'%'
'^'
只是一個注:「*」將查找最長的字符串,所以(‘富’,「酒吧「)將被視爲'(',''foo','bar'',')'。使用 」。*?」意思是「最短的字符串」,所以它會返回'(','「foo」','「bar」',')「。 – swstephe