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

前端之家收集整理的这篇文章主要介绍了正则表达式 – 正则表达式匹配Prolog前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试进行正则表达式匹配.我已经写出了所有的功能,但是他们没有按照他们的意愿工作.据我所知,当我尝试比较列表时,它有一个问题.
例如,“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).将失败.

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

原文链接:https://www.f2er.com/regex/356728.html

猜你在找的正则表达式相关文章