新的的正则表达式不能与数据库中已有的正则表达式出现包含或者交叉关系,但是我对正则表达式之间的包含或者交叉判断不熟悉,也没google出什么名堂,特在此求教于各位大侠

解决方案 »

  1.   

        这个好像是一个新话题吧,我简单想了一下,你可是设计一个算法,将正则表达式进行‘擦除’(借用泛型里的词),意思就是将正则表达式转换成一个能与之匹配的字符串,原理就是在字符中进行替换,将“\d+”替换成一个数字,比如1,将“\s+”替换成“ ”,将“[d-f]+”替换成d。这个设计起来可能有点复杂,以为“+”的话还好办,一个和多个没什么区别,“*”的话就不好说了,有和没有擦别很大,而且“*”多了还会涉及到排列组合,加上“?”,“()”等等也需要处理处理,会很复杂。而且,就算你设计出来了算法,也不能保证结果100%正确,想一下正则1:"hellow word"和正则2:"\w*\s*\w*",由于选择替换的数量不同,结果也可能不同。
       而且,我认为没有必要区分什么交叉和包含,包含可能确实有点冗余,但是交叉的话,要是去掉一个,那被去掉的正则还有与被比较的正则有不交叉的地方呢,这样也要舍弃吗?
       谁要是知道确实有能准确的方法来判断这个的话,一定要让我看看源码哈,很感兴趣。