我需要在数据集中检测一个灵活的模式。例如,模式如下:
0{1},1{*},0{1}
(the number between { and } is how many times a number may occur)
这将匹配:
0,1,0
0,1,1,1,1,1,0
上面一个仍然很容易,下面是一个更困难的问题:
0{1},( 1{*} | 1{*},2{1},1{*} ),0{1}
(the | pipe character is a "or")
这将匹配:
0,1,0
0,1,1,1,1,1,0
0,1,2,1,0
0,1,1,1,1,1,2,1,0
我发现很难理解如何检测这些灵活的模式。
我的第一个想法是生成某种类型的决策树,但是当模式变得更加复杂时,这将成为一个相当困难的任务,特别是因为您不必在这样的树中后退,并标记路径为“不工作”,然后尝试另一种路径。
也许有更好的办法解决这类问题吗?
[编辑]哦,我的问题可能过于简单化了,在我的例子中,0,1,2这个小数字不是数字,而是具有许多属性的对象。我的模式定义将匹配这些对象属性的一个或一个组合。
最佳答案