作者(不是我)信息:
華南理工大學(xué)軟件學(xué)院本科07級(jí)(現(xiàn)大二)
進(jìn)入大學(xué)前玩過幾個(gè)星期pascal,高考后的暑假重新學(xué)編程
程序信息:(點(diǎn)擊這里下載)
學(xué)習(xí)C++一年后的作品。
內(nèi)含所有代碼,以及VC++工程文件。
一個(gè)程序,輸入只有匹配沒有捕獲的正則表達(dá)式,輸入被匹配的字符串,輸出字符串中符合正則表達(dá)式要求的部分。
支持括號(hào)改變優(yōu)先級(jí),[字符集]和[^字符集],少量轉(zhuǎn)義(\d等),循環(huán)(+*?),沒有捕獲
輸入輸出(紅色部分為用戶輸入的內(nèi)容):
請(qǐng)輸入正則表達(dá)式 : /\*([^\*]|\*+[^\*/])*\*+/
請(qǐng)輸入所要匹配的字符串 : a//a///*\\nab**abc**//*
a//a//【/*\\nab**abc**/】/*
正則表達(dá)式->語法樹->ε-NFA->NFA->DFA->連通矩陣。
使用遞歸向下法判斷輸入的正則表達(dá)式的合法性并轉(zhuǎn)換為樹結(jié)構(gòu),其后轉(zhuǎn)成狀態(tài)機(jī)。