用于查找3次或更多次出现的正则表达式

时间:2013-02-11 14:42:48

标签: regex

是否可以使用正则表达式匹配字符串中任何重复子字符串(超过1个字符)的3次或更多次出现?

例如:

字符串ABCD ABC AB ACD DE包含子字符串AB 3次或更多次。

字母D也会出现3次,但只有一个字符,所以不能匹配。

我认为这超出了正则表达式的限制,但如果有一些天才,我会提出同样的问题。

我要做的是通过用一个字符替换重复的字符序列来减小加密查询字符串的大小,但字符串需要附加(或预先添加)“图例”以指示已减少的内容

例如:

字符串ABCD ABC AB ACD DE将更改为类似.CD .C . ACD DE的内容,并且需要添加一些内容以便知道它。现在代表AB。

.AB-

这样的东西

其中-充当终结符。因此,替换少于3实际上会增加整个字符串的大小。

我正在使用Classic ASP,但我对C#解决方案感到非常高兴。然后我可以将它粘贴在一个DLL中并以这种方式使用它。

1 个答案:

答案 0 :(得分:4)

由于正则表达式的贪婪和角色的消耗,这里存在许多限制。也就是说,你只能匹配最能满足正则表达式贪婪的结果

(..+).*\1.*\1

以上捕获至少两个字符,并且如果相同的子字符串稍后存在两次则匹配。这适用于

ABCD ABC AB ACD DE
ABCD ABCD AB ABCD DE

然而在后一种情况下只有“ABCD”匹配; AB没有。

除非这对你来说足够好,否则我建议使用除正则表达式以外的解决方案,例如用空格分隔单词并检查每个单词。它也可能最终比正则表达式更有效率。