正規表示式匹配

2021-09-22 19:58:03 字數 718 閱讀 3160

思路:

參考度娘其他大佬的思路,總結了一下。

匹配總共分兩種情況:

模式的第二位是否為「*」:

1、是「*」:

則有三種匹配方式:

模式第乙個與字串第乙個相等或者模式第乙個為「.」(代表任意),直接模式和字串都加1。

字串第乙個與模式的「*」後一位相等,字串不動,模式加2。

字串連續幾個相同,模式不變,字串加1.

2、不是「*」:

模式第乙個與字串第乙個相等或者模式第乙個為「.」(代表任意),直接模式和字串都加1;

否則匹配不成功。

注意

判斷字串為空和模式為空的情況

若以上都走完,剩下的情況都是不匹配

def ismatch(self, s: str, p: str) -> bool:

if not p:

return not s

if len(p)>1 and p[1]=='*':

return (s and (s[0]==p[0]or p[0]=='.'))and self.ismatch(s[1:],p)or self.ismatch(s,p[2:])

else :

return (s and (s[0]==p[0] or p[0]=="."))and self.ismatch(s[1:],p[1:])

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...