自己实现正则表达式匹配

遇到这么一道题:正则匹配,规定“+”匹配任何一个字符,“*”匹配任何0个或多个字符,自己写一个函数实现这个功能。


def get_last_index(string, s):

    if not string:

        return -1

    i = len(string) - 1

    while i >= 0:

        if string[i] == s:

            return i

        i -= 1

    return -1

def simplify(pattern,string):

    i = -1

    j = -1

    while i < len(pattern):

        if j >= len(string):

            return False

        if pattern[i] == string[j]:

            i += 1

            j += 1

        else:

            if pattern[i] == "+":

                i += 1

                j += 1

            elif pattern[i] == "*":

                if i == len(pattern) - 1:

                    return True

                else:

                    last_char = pattern[i+1]

                    last_index = get_last_index(string, last_char)

                    if last_index == -1:

                        return False

                    else:

                        i += 1

                        j = last_index

            else:

                return False

    return True

l = [

    ["abc+zx*a", "abchzxxx"],

]

for [a,b] in l:

    print (a,b, simplify(a,b))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容