您的位置:首页 > 编程语言 > Python开发

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

2015-10-20 10:43 761 查看
参考文章

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

纯递归实现

import sys

def 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 False

def 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 False

if __name__ == '__main__':
reg_exp = sys.argv[1]
text = sys.argv[2]

print(match_here(reg_exp, text))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息