50行代码实现正则引擎
发布时间:2020-12-14 01:45:50 所属栏目:百科 来源:网络整理
导读:/*50行代码实现正则引擎,参考《代码之美》,可以轻松解决95%的正则问题c 匹配任意的字母c .(句点) 匹配任意的单个字符 ^ 匹配输入字符串的开头 $ 匹配输入字符串的结尾 * 匹配前一个字符的零个或者多个出现*/main{putsl match('.*txt','2343txt')putsl m
/* 50行代码实现正则引擎,参考《代码之美》,可以轻松解决95%的正则问题 c 匹配任意的字母c .(句点) 匹配任意的单个字符 ^ 匹配输入字符串的开头 $ 匹配输入字符串的结尾 * 匹配前一个字符的零个或者多个出现 */ main { putsl match('.*txt','2343txt') putsl match('t.t','2343txt') } bool match(rstr reg,rstr text) { if reg.get(0)==`^ return match_here(reg.sub(1),text) for if match_here(reg,text) return true if text.empty break text=text.sub(1) return false } bool match_here(rstr reg,rstr text) { if reg.empty return true if reg.get(1)==`* return match_star(reg.get(0),reg.sub(2),text) if reg.get(0)==`$&®.sub(1).empty return text.empty if !text.empty&&(reg.get(0)==`.||reg.get(0)==text.get(0)) return match_here(reg.sub(1),text.sub(1)) return false } bool match_star(char c,rstr reg,rstr text) { for if match_here(reg,text) return true ifn !text.empty&&(text.get(0)==c||c==`.) break text=text.sub(1) return false } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |