正規表示式匹配

2021-09-11 17:31:24 字數 1264 閱讀 6505

題目描述

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

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

class solution:

def match(self, s, pattern):

if not s and not pattern:

return true

if s and not pattern: # pattern為空就這2種情況

return false

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

# 讓len(s) > 0在and 前面先判斷,否則s[0]在前會越界

if len(s) > 0 and (s[0] == pattern[0] or pattern == '.'): # s不為空時,,分s不為空和s為空兩種情況是為了防止s[i]非法越界

# 匹配乙個 or 匹配多個 or 忽略'*' 例:在s = 'ba' pattern = '.*a' 時,在'b'和'.*'匹配後要把'.*'忽略,讓'a'和'a'匹配,否則出錯

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

else: # 當 '*' 匹配0個字元時, 即s為空時

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

else: # pattern[1] != '*'時

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

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

else: # 不匹配

return false

方法二:

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

import re

class solution:

def match(self, ,s, pattern):

return true if re.fullmatch(pattern, s) else false

正規表示式 匹配

字串 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...