正規表示式匹配演算法

2021-06-19 15:32:25 字數 893 閱讀 3687

看《**之美》之美中有個簡短而高效的正規表示式匹配演算法,這裡給一下簡單的實現,供學習使用。

#include #include#includeusing namespace std;

int match(char * regexp, char * text);

int matchhere(char * regexp, char * text);

int matchstar(int c, char *regexp, char * text);

/* match: 在text中查詢regexp */

int match(char * regexp, char * text)

do}while(*text++ != '\0');

return 0;

}/* matchhere: 在text中的開頭查詢regexp */

int matchhere(char * regexp, char * text)

if(regexp[1] == '*')

if(regexp[0] == '$' && regexp[0] == '\0')

if(*text != '\0' && (regexp[0] == '.' || regexp[0] == *text))

return 0;

}/* matchstar: 在text的開頭查詢c*regexp */

int matchstar(int c, char *regexp, char * text)

}while(*text != '\0' && (*text++ == c || c == '.'));

return 0;

}int main()

else

}return 0;

}

演算法 正規表示式匹配

給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...

演算法 正規表示式匹配。

給你乙個字串s和乙個字元規律p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。輸入 s aa p a 輸出 false解釋 a 無法匹配 aa 整個字串。輸入 s aa p a 輸出 true 解釋 ...

演算法 正規表示式匹配

單純做個記錄 題目會給我們輸入兩個字串s和p,s代表文字,p代表模式串,請你判斷模式串p是否可以匹配文字s。正則表達演算法問題只需要把住乙個基本點 看兩個字元是否匹配,一切邏輯圍繞匹配 不匹配兩種情況展開即可。動態規劃演算法的核心就是 狀態 和 選擇 狀態 無非就是i和j兩個指標的位置,選擇 就是p...