Python劍指》正規表示式匹配

2021-09-17 19:39:55 字數 1167 閱讀 6545

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

每次分別在s和pattern中取乙個字元進行匹配,如果匹配,則匹配下乙個字元,否則,返回不匹配。 

設匹配遞迴函式 match(s, pattern)。

如果模式匹配字元的下乙個字元是『*』: 

•如果pattern當前字元和s的當前字元匹配,:有以下三種可能情況 

如果pattern當前字元和和str的當前字元不匹配 

pttern當前字元能匹配 str 中的 0 個字元:(str, pattern+2)

如果模式匹配字元的下乙個字元不是『*』,進行逐字元匹配。

』.』 和乙個字元匹配 match(str+1, pattern+1) 

# -*- coding:utf-8 -*-

class solution:

# s, pattern都是字串

def match(self, s, pattern):

# write code here

if len(s) == 0 and len(pattern)==0:

return true

if len(s) > 0 and len(pattern)==0:

return false

if len(pattern)>1 and pattern[1] == "*":

if len(s)>0 and (s[0] == pattern[0] or pattern[0] == '.'):

return (self.match(s,pattern[2:]) or self.match(s[1:],pattern[2:]) or self.match(s[1:],pattern))

else:

return self.match(s,pattern[2:])

if len(s)>0 and (pattern[0]=='.' or pattern[0]==s[0]):

return self.match(s[1:],pattern[1:])

return false

劍指正規表示式

因為這個想得太亂了,mark在這邊記下來 note 涉及二元的只有 因此將 和其他分開即可。同時又是乙個遞迴方法,設定掃瞄終止條件。class solution3 s,pattern都是字串 問題可以分為兩個部分,匹配過了的,和沒有匹配的,可以拆分之後用遞迴來完成 每次匹配第一位時,都有三種情況 d...

Python 正規表示式匹配

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

正規表示式匹配 python

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