加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 正则表达式匹配Prolog

发布时间:2020-12-13 22:56:38 所属栏目:百科 来源:网络整理
导读:我正在尝试进行正则表达式匹配.我已经写出了所有的功能,但是他们没有按照他们的意愿工作.据我所知,当我尝试比较列表时,它有一个问题. 例如,“re_contains(a,a).”给出真实(显然),“re_contains(union(a,b),a)”. 但是,只要我将其列为清单,它就会失败. “re_c
我正在尝试进行正则表达式匹配.我已经写出了所有的功能,但是他们没有按照他们的意愿工作.据我所知,当我尝试比较列表时,它有一个问题.
例如,“re_contains(a,a).”给出真实(显然),“re_contains(union(a,b),a)”.

但是,只要我将其列为清单,它就会失败. “re_contains(seq(a,[a,b]).”返回false.附加应该通过所有可能的组合来查找匹配,但这些功能都不能正常工作.这让我觉得我可能错过了一个基本案例.但我认为“re_contains(X,L): – X == L.”应该照顾它.我必须在这里寻找重要的东西.

这是我的代码:

re_contains(empty,[]).

re_contains(X,L) :-
    X == L.

re_contains(seq(X,Y),L) :-
    append(L1,L2,L),re_contains(X,L1),re_contains(Y,L2). 

re_contains(union(X,_),L) :-
    re_contains(X,L).

re_contains(union(_,L) :- 
    re_contains(Y,L).  

re_contains(kleene(X),L) :- 
    append([Car|L1],[Car|L1]),re_contains(kleene(X),L2).

re_contains(kleene(_),[]).
append / 3将分割L,L1和L2都将成为列表.

我会尝试用re_contains(X,[X])替换re_contains(X,L): – X == L.

更改后,re_contains(a,a).将失败.

您以不同的方式表示序列,而您的匹配器不提供两者.实际上,唯一的“工作”案例不是序列.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读