简单功能的正则表达式引擎实现

来源:互联网 时间:1970-01-01

  1. 参考文章

  2. 功能非常简单,只是检查 text 的前缀是否与 reg_exp 匹配,并不去检查 text 中间是否有与 reg_exp 匹配的子串。

  3. 纯递归实现

import sysdef match_star(c, reg_exp, text): while True: if match_here(reg_exp, text): return True if len(text) > 0 and (c == text[0] or c == '.'): text = text[1:] else: break return Falsedef match_here(reg_exp, text): if len(reg_exp) == 0: return True if len(reg_exp) > 1 and reg_exp[1] == '*': return match_star(reg_exp[0], reg_exp[2:], text) if reg_exp[0] == '$': return len(text) == 0 if reg_exp[0] == '.' and len(text) > 0: return match_here(reg_exp[1:], text[1:]) if reg_exp[0] == text[0] and len(text) > 0: return match_here(reg_exp[1:], text[1:]) return Falseif __name__ == '__main__': reg_exp = sys.argv[1] text = sys.argv[2] print(match_here(reg_exp, text))

相关阅读:
Top